1 Reply Latest reply: Sep 17, 2013 11:14 PM by pwillener RSS

    E-Mail in Outlook über Visual Basic mit Hilfe von AdobePDFMakerforOffice erstellen

    D. H. Wagner

      Ich möchte gerne aus Visual Basic eine E-Mail aus Outlook als PDF abspeichern, wobei ich auch gerne die Anhänge mit im PDF abspeichern möchte. Dazu möchte ich das Addin in Outlook über Visual Basic verwenden.

      Ich verwende derzeit VisualBasix Express und Adobe Acrobat XI Version 11.0.4.

       

      Ich habe aufgrund von Quelltexten im Internet nachfolgenden Code erstellt, wobei ich das Objekt bzw. das Addin in Outlook das "AdobePDFMakerforOffice" anscheind nicht finden bzw. zuordnen kann.

       

      Von Visual Basic wurde folgende Fehlermeldung angezeigt bei der markierten "-------->>" Zeile angezeigt:

      "Zusätzliche Informationen: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "AdobePDFMakerForOffice.PDFMaker" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{1FE6F30F-4AA0-4EB5-A61C-00C14761EC3E}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE))."

       

      Es gibt wohl verschiedene Möglichkeiten das Objekt zu übernehmen, aber ich bekomme immer diese Fehlermeldung. Die Meldungen zwischendurch habe ich nur zur Bestätigung, dass Outlook bzw. das AdobePDFForOffice gefunden w bzw. connectet ist hinzugefügt.

       

      Weiß hier jemand Rat ?

       

      Der Code lautet:

       

      Imports System.Diagnostics

      Imports System.Linq

      Imports System.Reflection

      Imports System.Runtime.InteropServices

      Imports Microsoft.Office.Interop

      Imports AdobePDFMakerForOffice

       

      Private Sub BtnEmailOutlookPdf_Click(sender As Object, e As EventArgs) Handles BtnEmailOutlookPdf.Click

              Dim appAdobe As AdobePDFMakerForOffice.PDFMaker

              Dim appsettings As AdobePDFMakerForOffice.ISettings

       

              Dim Result As Boolean = EnumWindows(Callback, IntPtr.Zero)

              Dim ObjOl As Object

              Dim myItem As Outlook.Inspector

              Dim SpeichernameMSG, SpeichernamePDF As String

              Dim a

              Dim IndX As Int16

       

       

              Dim objInterOL As Microsoft.Office.Interop.Outlook.Application

              Dim objSelection As Microsoft.Office.Interop.Outlook.Selection

              Dim objItems As Microsoft.Office.Interop.Outlook.Items

              Dim objMailItem As Microsoft.Office.Interop.Outlook.MailItem

       

              ' Outlook suche und Objekt übernehmen

              If Process.GetProcessesByName("OUTLOOK").Count() > 0 Then

       

                  ' If so, use the GetActiveObject method to obtain the process and cast it to an Application object.

                  objInterOL = DirectCast(Marshal.GetActiveObject("Outlook.Application"), Outlook.Application)

                  'MsgBox("Outlook-Objekt übergeben: Erfolg")

              Else

                  MsgBox("Outlook ist nicht geöffnet, bitte Outlook starten")

              End If

       

              'Acrobat Objekt in Outlook suchen

              With objInterOL

                  Do

                      IndX = IndX + 1

                      If IndX > .COMAddIns.Count Then Exit Do

                  Loop Until .COMAddIns(IndX).Description = "Acrobat PDFMaker Office COM Addin"

       

                  If IndX > .COMAddIns.Count Then

                      MsgBox("Unable to locate Acrobat PDFMaker COM Add-In for Microsoft Office." & vbCrLf & "Please contact an MIS associate for assistance", vbCritical, "Cannot Export PDF")

                  Else

                      'MsgBox("My ProgID is " & .COMAddIns(1).ProgID & " and my GUID is " & .COMAddIns(1).Guid)

                      If .COMAddIns(IndX).Connect Then

                          MsgBox("The add-in is connected.")

                      Else

                          MsgBox("The add-in is not connected.")

                      End If

      ---->>>>       appAdobe = .COMAddIns(IndX).object                       <<---------------------

                      MsgBox("appAdobe zugewiesen !")

                  End If

              End With

       

              SpeichernamePDF = "Test.PDF"

              appAdobe.GetCurrentConversationSettings(appsettings)

              With appsettings

                  .IsConversionSilent = True

                  .IsAutomation = True

                  .ShouldShowProgressDialog = True

                  .AddTags = False

                  .ConvertComments = True

                  .AddBookmarks = False

                  .AddLinks = False

                  .OutputPDFFileName = SpeichernamePDF

                  .ViewPDFFile = True

                  .AttachSourceFile = False

              End With

              appAdobe.CreatePDFEx(appsettings, 0)

       

          End Sub