Saturday, August 18, 2018

Saving multiple e-mails to pdf with PDFMAKER

I'm brand spanking new to VBA. But I've programmed a bit in SAS, just a bit in Assembler (mainframe and PC), Word Perfect (macros), a bit in Java, HTML, other stuff. What I do is, when I have a problem and I think I can program it, I look for code on the internet and adjust it to fit my needs. I have read a little bit of VBA programming. What I'm trying to do is make a macro to save a bunch of Outlook e-mail messages with PDFMAKER. I've come up with the below, so far. When I step the program, pmkr2 gets assigned type "ObjectPDFMaker" and stng gets assigned type "ISettings". So far, so good. Then I try to set stng and can't do it. I get the error "Method or data member not found." If I get rid of Set it highlights .ISettings and I get the same error. I go into F2 and the AdobePDFMakerforOffice library is there, and the class ISettings is there, but I can't seem to set stng. I'm wa-a-a-ay frustrated. Please help.

Sub ConvertToPDFWithLinks()

Dim pmkr2 As Object
Set pmkr2 = Application.COMAddIns.Item(6).Object ' Assign object reference.

Dim pdfname As String
pdfname = "C:\stuff\stuff\tester.pdf"

Dim stng As AdobePDFMakerForOffice.ISettings

Set stng = AdobePDFMakerForOffice.ISettings

stng.AddBookmarks = True
stng.AddLinks = True
stng.AddTags = True
stng.ConvertAllPages = True
stng.CreateFootnoteLinks = True
stng.CreateXrefLinks = True
stng.OutputPDFFileName = pdfname
stng.PromptForPDFFilename = False
stng.ShouldShowProgressDialog = True
stng.ViewPDFFile = False

pmkr.GetCurrentConversionSettings stng

pmkr2.CreatePDFEx stng, 0

Set pmkr2 = Nothing ' Discontinue association.

End Sub

Solved

I updated your code a little. See if this has any affect:

Sub ConvertToPDFWithLinks()
   Dim pmkr2 As AdobePDFMakerForOffice.PDFMaker
   'Set pmkr2 = Application.COMAddIns.Item(6).Object ' Assign object reference.
   Set pmkr2 = Nothing

   For Each a In Application.COMAddIns
      If InStr(UCase(a.Description), "PDFMAKER") > 0 Then
        Set pmkr2 = a.Object
        Exit For
      End If
   Next

   If pmkr2 Is Nothing Then
      MsgBox "Cannot Find PDFMaker add-in", vbOKOnly, ""
      Exit Sub
   End If

   Dim pdfname As String
   pdfname = "C:\stuff\stuff\tester.pdf"

   Dim stng As AdobePDFMakerForOffice.ISettings
   pmkr2.GetCurrentConversionSettings stng

   stng.AddBookmarks = True
   stng.AddLinks = True
   stng.AddTags = True
   stng.ConvertAllPages = True
   stng.CreateFootnoteLinks = True
   stng.CreateXrefLinks = True
   stng.OutputPDFFileName = pdfname
   stng.PromptForPDFFilename = False
   stng.ShouldShowProgressDialog = True
   stng.ViewPDFFile = False

   pmkr2.CreatePDFEx stng, 0

   Set pmkr2 = Nothing ' Discontinue association.
End Sub

The main changes were in how the addin is obtained and in how stng is created.


No comments:

Post a Comment