Wie viele von euch vielleicht schon wissen wurde mit dem PDF-Creator 2 eine neue COM-Schnittstelle eingeführt. Die alten VBA-Codes für den PDF-Creator bis Version 1.7.3 funktionieren nicht mehr.
//edit: Bitte schaut auch im Installationsverzeichnis des pdfcreator nach. Wenn Ihr die Beispiele installiert habt, findet Ihr dort verschiedene Programmiersprachen, u.a. auch VBA. Damit könnt Ihr ggf. auf Änderungen in der Syntax reagieren und seht auch den Verweis, falls Ihr Early Binding anwendet. Hier im Beispiel betrifft die Syntaxänderung z.B. das Objekt "PDFCreatorBeta.JobQueue", welches je nach Version auch ohne Beta auskommt: "PDFCreator.JobQueue"//
Hier ein Beispiel zum Konvertieren einer Exceltabelle in PDF mit der neuen COM-Schnittstelle im PDF-Creator 2.
//edit: Bitte schaut auch im Installationsverzeichnis des pdfcreator nach. Wenn Ihr die Beispiele installiert habt, findet Ihr dort verschiedene Programmiersprachen, u.a. auch VBA. Damit könnt Ihr ggf. auf Änderungen in der Syntax reagieren und seht auch den Verweis, falls Ihr Early Binding anwendet. Hier im Beispiel betrifft die Syntaxänderung z.B. das Objekt "PDFCreatorBeta.JobQueue", welches je nach Version auch ohne Beta auskommt: "PDFCreator.JobQueue"//
Hier ein Beispiel zum Konvertieren einer Exceltabelle in PDF mit der neuen COM-Schnittstelle im PDF-Creator 2.
Option Explicit
Sub PdfWithPDFCreatorZwei()
Dim pdfJob As Object
Dim printJob As Object
Dim wshNetwork As Object
Dim bolSendAsAttach As Boolean
Const Drucker1 As String = "PDFCreator"
Const Drucker2 As String = "Samsung ML-2850 Series"
If MsgBox("Soll die Datei nach dem Erstellen versendet werden?", 36, "Senden?") = vbYes Then bolSendAsAttach = True
On Error GoTo Ende
Set pdfJob = CreateObject("PDFCreatorBeta.JobQueue")
pdfJob.Initialize
Set wshNetwork = CreateObject("WScript.Network")
wshNetwork.SetDefaultPrinter Drucker1 'Standarddrucker auf PDFCreator setzen
Worksheets("Tabelle1").PrintOut
pdfJob.WaitForJob (10)
Set printJob = pdfJob.NextJob
With printJob
.SetProfileByGuid ("DefaultGuid")
If bolSendAsAttach Then
.SetProfileSetting "EmailClient.Enabled", "true" 'Datei als Email senden einschalten
.SetProfileSetting "EmailClient.Subject", "Test" 'Betreff
.SetProfileSetting "EmailClient.Content", "Hallo,<br><br>anbei gewünschte Unterlagen." & _
"<br><br>Gruß, Max<br><br>" 'Body
.SetProfileSetting "EmailClient.Recipients", "test@server.de;test2@server.de" 'Empfänger
End If
.ConvertTo (Environ("USERPROFILE") & "\Desktop\Test.pdf") 'Pfad und Dateiname für PDF-Datei, und konvertieren
If .IsFinished = True Then
pdfJob.ReleaseCom 'PDFCreator-Instanz beenden
wshNetwork.SetDefaultPrinter Drucker2 'Standarddrucker wiederherstellen
End If
End With
Exit Sub
Ende:
pdfJob.ReleaseCom
End SubVBA/HTML - CodeConverter für Office-Foren, AddIn für Office 2002-2013 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:mumpel
Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0