sabse96
Goto Top

InfoPath Formular und Outlook Kontakte

Hallo Zusammen,

ich habe folgende Frage.

Ich bin gerade dabei ein InfoPath Formular zu erstellen. Es funktionieren so weit auch alle Funktionen etc. nur bei einer Sache hab ich ein paar Probleme.

Das Formular soll in einem Netzlaufwerk von uns veröffentlicht werden, ist auch schon geschehen. Bearbeitet/Gesendet soll es über Outlook werden, außerdem sollen wenn man im Formular auf Senden klickt, ein Auswahlfenster erscheinen, in dem alle angelegten Outlook Kontakte hinterlegt sind.
Weiß vlt. jemand wie ich das in InfoPath einstellen kann?

Danke schon mal.

Content-ID: 207960

Url: https://administrator.de/contentid/207960

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

colinardo
colinardo 13.06.2013, aktualisiert am 14.06.2013 um 16:06:02 Uhr
Goto Top
Hallo Sabse96,
ich weiß nicht ob du dich mit VBA auskennst oder damit schon mal Kontakt hattest, aber die Vorgehensweise sieht folgendermaßen aus:

  1. Man erstelle im Formular eine Datenverbindung des Typs E-Mail und gebe Ihr den Namen sendmail (Tab Daten >Datenverbindungen)
  2. Man erstelle eine Schaltfläche im Formular und weise Ihr folgenden benutzerdefinierten Code zu :
(Hinweis: Im Code-Editor muss man noch einen Verweis auf die .NET Bibliothek Microsoft.Office.Interop.Outlook hinzufügen[Projekt->Verweis hinzufügen], und im Codefenster ganz oben noch folgende Zeile hinzufügen Imports Microsoft.Office.Interop)
If Me.Errors.Count = 0 Then
    Dim objOL As New Outlook.Application
    Dim oDialog As Outlook.SelectNamesDialog = objOL.Session.GetSelectNamesDialog
    Dim targetTo As String = ""  
    Try
        With oDialog
            .AllowMultipleSelection = True
            If .Display() = True Then
                For Each rec As Outlook.Recipient In oDialog.Recipients
                    targetTo &= rec.Address & ";"  
                Next
                Dim conn As EmailSubmitConnection = DataConnections("sendmail")  
                conn.To.SetStringValue(targetTo)
                conn.Subject.SetStringValue("Testsubject")  
                conn.Introduction = "Testbody"  
                conn.Execute()
            End If
        End With
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
Else
    MessageBox.Show("Es sind nicht alle erforderlichen Eingabefelder ausgefüllt", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)  
End If
back-to-topJetzt muss man in den Sicherheitseinstellungen des Formulars noch folgendes machen:
Datei > Erweiterte Formularoptionen > Sicherheits und Vertrauensstellung > "Sicherheitsstufe : Voll vertrauenswürdig"
und unten das Häkchen Diese Formularvorlage signieren setzen und entweder ein schon vorhandenes Zertifikat wählen oder ein neues erstellen.

Was jetzt passiert wenn du auf den benutzerdefinierten Button klickst ist folgendes:
Nach dem Klick auf den Button wird der Outlook-Eigene Dialog zum wählen der Kontakte aufgerufen in denen du den Empfänger wählen kannst.

Hoffe das war einigermaßen klar. Wenn nicht, kann ich dir das in einem fertigen Demo-Formular zuschicken wenn du willst...

Grüße Uwe
Sabse96
Sabse96 14.06.2013 um 08:20:28 Uhr
Goto Top
Hi Uwe,

danke schon mal für deine Antwort. Ich habe das jetzt so ausprobiert aber es funktioniert nicht. Wenn ich auf den Button im Formular dann klicke, passiert gar nichts.

Wäre echt cool von dir, wenn du mir mal so ein Demo-Formular zuschicken könntest.
colinardo
colinardo 14.06.2013 aktualisiert um 08:36:04 Uhr
Goto Top
Welche Outlook Version benutzt du ? Das muss ich für die Vorlage wissen, da es unterschiedliche Office.Interop Bibliotheken für die jeweilige Office Version gibt ..

p.s. Sorry oben war die Bibliothek falsch angegeben, es muss natürlich Microsoft.Office.Interop.Outlook heißen....
Sabse96
Sabse96 14.06.2013 um 08:43:16 Uhr
Goto Top
ich benutze Outlook 2010
colinardo
colinardo 14.06.2013 um 09:14:02 Uhr
Goto Top
Download hier. Du musst wahrscheinlich noch das Zertifikat ändern wie oben beschrieben, damit InfoPath dem Code vertraut. Noch zur Info: Es kann sein das der Dialog zum wählen der Kontakte unter Umständen nicht als oberstes Fenster angezeigt wird, das liegt daran das der Dialog im Kontext von Outlook läuft und nicht von InfoPath ...
Sabse96
Sabse96 14.06.2013 um 09:37:16 Uhr
Goto Top
So also ich hab es jetzt runtergeladen, ich kann das Formular allerdings überhaupt nicht Bearbeiten.
colinardo
colinardo 14.06.2013 um 09:39:29 Uhr
Goto Top
mal im Explorer Rechtsklick auf das Formular gemacht und Entwerfen gewählt ?
Sabse96
Sabse96 14.06.2013 um 09:41:41 Uhr
Goto Top
Die Funktion hab ich gar ned zu Auswahl
Sabse96
Sabse96 14.06.2013 um 09:42:28 Uhr
Goto Top
Okay, passt schon habs schon ^^
Sabse96
Sabse96 14.06.2013 um 09:45:22 Uhr
Goto Top
jetzt bekomme ich aber folgende Fehlermeldung:

InfoPath kann den Ereignishandler nicht hinzufügen.

Das Visual Basic- oder C#-Projekt für diese Formularvorlage kann nicht gefunden werden.
d:\Eigene Dateien\nfoPath-Projekte\Formular 11\Formular 1.vbproj
colinardo
colinardo 14.06.2013 um 09:49:41 Uhr
Goto Top
Das ist das Problem mit der Weitergabe von solchen Projekten, deshalb habe ich oben die Anleitung geschrieben, weil es bei der Weitergabe Probleme gibt....
Sabse96
Sabse96 14.06.2013 um 09:52:37 Uhr
Goto Top
Kannst du mir vlt. einen Screenshot von dem Code-Editor schicken von dem Formular?
colinardo
colinardo 14.06.2013 um 10:00:31 Uhr
Goto Top
00ee98eb625c67178f453a2e924f18f0

back-to-topVerweis auf Outlook Bibliothek nicht vergessen:

a48b65bb8f3c3a112cdb12055d8f1364
colinardo
colinardo 14.06.2013 um 10:06:55 Uhr
Goto Top
Was du noch beachten musst wenn das Formular von mehreren Leuten benutzt wird ist der Pfad in dem der benutzerdefinierte Code gespeichert wird:
(Erweiterte Optionen des Formulars)
ba9290a4e2930b6ea77133b2d4e0ef30
Sabse96
Sabse96 14.06.2013 um 10:13:08 Uhr
Goto Top
Super Vielen Dank.

Jetzt noch eine blöde Frage, ich bin jetzt grad bei dem Verweis und bei mir wird das Microsoft.Office.Interop.Outlook gar nicht aufgeführt?
colinardo
colinardo 14.06.2013 aktualisiert um 10:31:08 Uhr
Goto Top
OK dann hast du die Primary Interop Assemblies nicht installiert, macht nix dann nimmst du halt die Outlook-COM Bibliothek die sollte auf jeden Fall installiert sein:

8cd1968d23538486ad16ac1ef56ec2bc
Sabse96
Sabse96 14.06.2013 um 12:10:59 Uhr
Goto Top
funktioniert immer noch ned...

ich bin mir aber auch nicht mal sicher, ob er das auch wirklich ausführt..
Sabse96
Sabse96 14.06.2013 um 12:41:35 Uhr
Goto Top
Das is es jetzt momentan:

Imports Microsoft.Office.InfoPath
Imports System
Imports System.Windows.Forms
Imports System.Xml
Imports System.Xml.XPath
Imports Microsoft.Office.Interop
Imports mshtml


Namespace FRG_Formular_TEST
Public Class FormCode
' Membervariablen werden in browserfähigen Formularen nicht unterstützt.
' Schreiben und lesen Sie diese Werte stattdessen aus dem FormState-
' Wörterbuch, indem Sie Code wie folgt verwenden:
'
' Private Property _memberVariable() As Object
' Get
' _memberVariable = FormState("_memberVariable")
' End Get
' Set
' FormState("_memberVariable") = value
' End Set
' End Property

' HINWEIS: Das folgende Verfahren ist für Microsoft InfoPath erforderlich.
' Es kann mithilfe von Microsoft InfoPath geändert werden.
Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup
AddHandler DirectCast(EventManager.ControlEvents("Schaltfläche"), ButtonEvent).Clicked, AddressOf Absenden_Clicked
AddHandler DirectCast(EventManager.ControlEvents("CTRL63_5"), ButtonEvent).Clicked, AddressOf CTRL63_5_Clicked
End Sub

Public Sub Absenden_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
Dim objOL As New Outlook.Application
Dim oDialog As Outlook.SelectNamesDialog = objOL.Session.GetSelectNamesDialog
Dim targetTo As String = ""
With oDialog.AllowMultipleSelection = True
If oDialog.Display() = True Then
For Each rec As Outlook.Recipient In oDialog.Recipients
targetTo &= rec.Adress & ";"
Next
Dim conn As EmailSubmitConnection = DataConnections("FRG-Formular_TEST")
conn.To.SetStringValue(targetTo)
conn.To.SetStringValue("Testsubject")
conn.Introduction = "Testbody"
conn.Execute()
End If
End With
'Dim root As XPathNavigator = MainDataSource.CreateNavigator()
End Sub

Public Sub CTRL63_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
' Fügen Sie hier Code ein.
End Sub
End Class
End Namespace
colinardo
colinardo 14.06.2013 aktualisiert um 12:57:16 Uhr
Goto Top
irgendwas machst du noch falsch...
hast du das Formular wirklich als voll vertrauenswürdig gesetzt und signiert wie im ersten Post geschrieben ?
Datei > Erweiterte Formularoptionen > Sicherheits und Vertrauensstellung > "Sicherheitsstufe : Voll vertrauenswürdig" und unten das Häkchen Diese Formularvorlage signieren setzen und entweder ein schon vorhandenes Zertifikat wählen oder ein neues erstellen.
minimiere mal andere Fenster um zu sehen ob der Outlook-Dialog nicht unter einem anderen Fenster steckt oder öffne Outlook mal nach dem Klick auf den Button.

ansonsten mach mal ein TeamViewer-Meeting auf ...
Sabse96
Sabse96 14.06.2013 um 12:56:47 Uhr
Goto Top
Ja ist alles so eingestellt.

Das Fenster taucht auch dann nicht auf.
colinardo
colinardo 14.06.2013 um 12:58:42 Uhr
Goto Top
TeamViewer ... wenn du willst, sonst nimmt das hier kein Ende
Sabse96
Sabse96 14.06.2013 um 13:20:30 Uhr
Goto Top
wenn du Zeit hast