PDF-Creator Serienbrief als PDF Dateinamen übergeb

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: PDF-Creator Serienbrief als PDF Dateinamen übergeb
von: Benny
Geschrieben am: 14.06.2015 22:17:29

Hallo,
ich möchte aus Excel raus einen Wordserienbrief öffnen und als PDF speichern/drucken.
Ein einzelnen Excel oder Worddokument kann ich per Export unter dem gewünschten Namen und Pfad bereits speichern.
Nun meine Frage: Gibt es eine Möglichkeit über die .MailMerge. die Datei als PDF zu speichern oder muss ich die Datei als pdf DRUCKEN?
Beim Drucken möchte ich den Speicherpfad und den Dateinamen an den PDF-Drucker übergeben. Dazu habe ich den PDF-Creator installiert und unter Extras->Veweise den "PDF-Creator- Your OpenSource PDF Solution" und "PDFCreatorApp 1.0 TypeLibary" hinzugefügt. Unter den Bibliotheken (F2) finde ich nun auch die Klassen PDFCreatorObj und ComPDFCreatorApp.
Im Forum habe ich nun verschiedene Programme zum Ansprechen des PDFCreator gefunden, die bei mir leider schon zu Beginn scheitern, denn der Code
Dim pdfJob As Object
Set pdfJob = CreateObject("PDFCreator.clsPDFCreator")
bricht mit dem Fehler 429 Objekterstellung durch ActivXKomponente nicht möglich ab.
Der Code
Dim PDFCreator2 As PDFCreator.PdfCreatorObj
bzw.
Dim PDFCreator2 As PDFCreator.PdfCreatorObj
Dim PDFCreator2 As PDFCreator.PrintJob
funktioniert, aber dann weiß ich nicht, wie ich dann den Serienbrief als PDf drucken kann.
Zur Sicherheit hänge ich noch den Code an, mit dem ich den Serienbrief bisher als PDF drucke. Allerdings muss ich bei dieser Lösung immer noch den Dateinamen und Pfad bei Drucken Dialog von Hand einstellen.

Public Sub SerienbriefDruck(ByVal speicherpfad As String, _
                            ByVal dateiname As String, _
                            ByVal pfadSerienbrief As String, _
                            ByVal dateinameSerienbrief As String, _
                            ByVal tabellenblatt As String, _
                            ByVal beginnDS As Integer, _
                            ByVal endDS As Integer, _
                            ByVal drucken As Boolean, _
                            Optional ByVal druckbereich As Boolean)
  
  Dim tabelle As String
  tabelle = ActiveWorkbook.name
  
  
  Dim wdApp As Object
  Dim dok As Object
  'Serienbrief drucken
  
  If Dir(speicherpfad, vbDirectory) <> "" _
      And dateiname <> "" _
      And Dir(pfadSerienbrief & dateiameSerienbrief) <> "" _
      And beginnDS > 0 Then  'And endDS < teilnehmerAnzahl
    
    
    
    'Word öffnen
    Set wdApp = CreateObject("Word.Application")
    'TODO auf False setzen, damit Erstellung im Hintergrund läuft
    wdApp.Visible = True
    'Serienbrief öffnen
    'MsgBox pfadSerienbrief & serienbrief
    Set dok = wdApp.Documents.Open(pfadSerienbrief & dateinameSerienbrief)
    dok.MailMerge.MainDocumentType = 0
    dok.MailMerge.MainDocumentType = wdFormLetters
    'Serienbrief aufrufen
    
     dok.MailMerge.OpenDataSource name:=pfadTabelle & ActiveWorkbook.name, _
        ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:= _
        "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=E:\Vorlage.xlsm;Mode=Read; _
Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global" _
        , SQLStatement:="SELECT * FROM " & from, SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
    'Drucken
    Dim printerAkt As String
    printerAkt = wdApp.ActivePrinter
    'Mehrere Datensätze
      wdApp.ActivePrinter = "PDF-XChange Printer 2012"
      With ActiveDocument.MailMerge
         .Destination = wdSendToPrinter
         .SuppressBlankLines = True
         With .DataSource
           .FirstRecord = beginnDS
           .LastRecord = endDS
         End With
         .Execute Pause:=False
      End With
    wdApp.ActivePrinter = printerAkt
    wdApp.Quit wdDoNotSaveChanges
    Set dok = Nothing
    Set wdApp = Nothing
  End If
End Sub

Ich hoffe ich habe meinen Wunsch klar dargestellt und freue mich auf eure Lösungsvorschläge.
Vielen Dank
Benny

Bild

Betrifft: PDF-Creator Serienbrief...
von: mumpel
Geschrieben am: 15.06.2015 09:27:23
Hallo!
1. Welche Version des PDF-Creators setzt Du ein? Dieser Code funktioniert in der Version 2.0 nicht, sondern nur bis Version 1.7.3
2. Office 2010 besitzt eine eigene Exportfunktion (ExportAsFixedFormad).
Gruß, René

Bild

Betrifft: AW: PDF-Creator Serienbrief...
von: Benny
Geschrieben am: 16.06.2015 06:26:59
Hallo René,
ich benutze den PDF-Creator in der aktuellen (2.1.2) Version. Andere Dokumente exportiere ich auch bereits über die Export-Funktion, aber den Serienbrief mit den gewünschten Datensätzen muss ich doch per Druck exportieren, oder? Ich möchte eine PDF-Datei mit den gewünschten Datensätzen. Gibt es eine Möglichkeit alle bzw. nur gewünschte Datensätze über die Exportfunktion in ein PDF-zu Exportieren? Un wenn ja, wie?
Vielen Dank für deine Hilfe
Benny

Bild

Betrifft: AW: PDF-Creator Serienbrief...
von: Benny
Geschrieben am: 17.06.2015 12:00:59
Hat noch jemand eine Idee?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "PDF-Creator Serienbrief als PDF Dateinamen übergeb"