Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
aus Word ein PDF per VBA erzeugen
zurück: AddIn Datumsangaben in Word ersetzen und vereinheitlichen weiter: Online-Handbuch Word 2007 im Vergleich zu Word 2003 Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Bamberg
Excel/Access mit VBA


Verfasst am:
17. Aug 2008, 10:54
Rufname: Gerd

aus Word ein PDF per VBA erzeugen - aus Word ein PDF per VBA erzeugen

Nach oben
       Version: Office 2k (2000)

Hallo liebe Forumbesucher,

sehr oft wird im Forum die Frage gestellt, wie kann ich ein Dokument innerhalb VBA in ein PDF wandeln („drucken“) und den Namen der PDF-Datei vorgeben.

Oftmals sucht man die Lösung per Fernsteuerung (unter Zuhilfenahme der SendKeys-Anweisung) den Dateidialog eines z.B. CutePDF oder PDF995 o.ä. zu befüllen. Dies ist jedoch in der Praxis sehr störanfällig, da man die Wartezeiten zwischen den Sendkeys-Anweisungen schätzen muss und damit Gefahr läuft, eine Anweisung zu senden, obwohl unsere Word-Application noch anderweitig beschäftigt ist und unseren Befehl noch gar nicht aufnehmen kann.

Es gibt auch eine elegante und vor allem kostenlose Lösung, wo sich die Steuerung ausschließlich in VBA abspielt:
Sourceforge.net bietet auf seiner Seite einen PDFCreater der dies ermöglicht. Nicht nur, dass dort die Datei kostenlos heruntergeladen werden kann, man bekommt dort „frei Haus“ einen OpenSourceCode geliefert, also alle Methoden und Funktionen des Programms.

Dies hat sich ExcelGuru.ca zunutze gemacht und für Excel mehrere VBA-Skript’s erstellt. Leider findet man für MS WORD nur einen Code, welcher leider (zumindest bei mir am Rechner, ich nutze Word 2000 und die neuste Version des PDFCreater 0.9.5) nicht wirklich funktioniert. Also müssen wir selbst wieder in die Tasten hauen.

Da die Prozedur doch etwas ungewohnte Befehle nutzt, habe ich die Prozedur um zwei Parameter ergänzt. So kann man mit nur einer Anweisung unter Angabe des Pfades und des Dateinamens ein PDF erzeugen.

in ein allgemeines Modul, z.B. Modul1
Sub Test_der_Prozedur() 
 
    Call PDF_Erstellen("C:\", "TestPDF") 
 
End Sub 
in ein allgemeines Modul, z.B. Modul2
Option Explicit 
'   Download der Software PDFCreater (Version 0.9.5) Stand 24.12.2007 hier: 
'   http://sourceforge.net/projects/pdfcreator/ 
' 
'   Falls die benannte Version nicht funktioniert, 
'   hier eine Übersicht der Versionen: 
'   http://sourceforge.net/project/showfiles.php?group_id=57796&package_id=53473 
' 
'   Installation vollständig durchführen 
' 
'   Verweis auf "PDFCreator" setzen 
' 
'   ReferenzCode: http://excelguru.ca/node/21 
'   "Printing Worksheets To A PDF File (Using Early Binding)" 
' 
'   Danke an bst(Bernd) für den Link und Hinweis 
' 
'   überarbeitet von Bamberg(Gerd) 
 
Public Sub PDF_Erstellen(ByVal Pfad As String, ByVal DateiName As String) 
    Dim pdfjob As PDFCreator.clsPDFCreator 
    Dim MeinDrucker As String, Status_ScreenUpd As Boolean 
     
    'Aktualisierungsstatus merken 
    Status_ScreenUpd = Application.ScreenUpdating 
    Application.ScreenUpdating = False 
     
    'Drucker merken 
    MeinDrucker = ActivePrinter 
 
    'Evtl. Pfad ergänzen 
    If Right(Pfad, 1) <> "\" Then 
        Pfad = Pfad & "\" 
    End If 
     
    'Evtl. DateiName ergänzen 
    If LCase(Right(DateiName, 4)) <> ".pdf" Then 
        DateiName = DateiName & ".pdf" 
    End If 
 
    Set pdfjob = New PDFCreator.clsPDFCreator 
 
    'PDFCreater vorbereiten 
    With pdfjob 
        If .cStart("/NoProcessingAtStartup") = False Then 
            MsgBox "Initialisierung des PDFCreator fehlgeschlagen", vbOKOnly, "Mitteilung" 
            Exit Sub 
        End If 
        .cOption("UseAutosave") = 1 
        .cOption("UseAutosaveDirectory") = 1 
        .cOption("AutosaveDirectory") = Pfad 
        .cOption("AutosaveFilename") = DateiName 
        .cOption("AutosaveFormat") = 0              '0 = PDF 
        .cClearCache 
    End With 
 
    'Drucker auswählen 
    ActivePrinter = "PDFCreator" 
    'Word druckt nun das aktuelle Dokument 
    ActiveDocument.PrintOut Background:=False, Copies:=1 
     
    'Wir warten bis der Druckjob erstellt wurde 
    Do Until pdfjob.cCountOfPrintjobs = 1 
        DoEvents 
    Loop 
 
    pdfjob.cPrinterStop = False 
 
    'Wir warten bis der Druckjob gedruckt wurde 
    Do Until pdfjob.cCountOfPrintjobs = 0 
        DoEvents 
    Loop 
     
    pdfjob.cClose 
    Set pdfjob = Nothing 
     
    'gemerkten Drucker wieder als Standard einsetzen 
    If MeinDrucker <> "" Then 
        ActivePrinter = MeinDrucker 
    End If 
     
    'Aktualisierungsstatus wieder setzen 
    Application.ScreenUpdating = Status_ScreenUpd 
End Sub 
Bitte für Fragen zu diesem Beitrag das WORD-VBA-Forum nutzen.

Gerd

_________________
NIPSILD = Nicht In Problemen, Sondern In Lösungen Denken


Zuletzt bearbeitet von Bamberg am 17. Aug 2008, 18:57, insgesamt einmal bearbeitet
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
17. Aug 2008, 18:21
Rufname:
Wohnort: Leipzig


AW: aus Word ein PDF per VBA erzeugen - AW: aus Word ein PDF per VBA erzeugen

Nach oben
       Version: Office 2k (2000)

Lieber Gerd,

SAUBER!!! Das hast Du wirklich sehr gut gemacht, ganz herzlichen Dank!
Die Frage wird wirklich sehr häufig gestellt.

Auch sehr schön kommentiert.

Liebe Grüße
Lisa
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Serienbriefe: Serienbrief als PDF abspeichern - will nicht so recht 0 mrniceguy1977 295 30. Jan 2013, 09:27
mrniceguy1977 Serienbrief als PDF abspeichern - will nicht so recht
Keine neuen Beiträge Word Serienbriefe: Word Dokument per Klick auf Button per mail versenden 3 lexi3112 2274 19. Dez 2012, 16:27
Alex3112 Word Dokument per Klick auf Button per mail versenden
Keine neuen Beiträge Word Serienbriefe: Einzelne Seiten aus Word per Email versenden 0 NicoRose 1156 09. Jan 2012, 16:08
NicoRose Einzelne Seiten aus Word per Email versenden
Keine neuen Beiträge Word Serienbriefe: Excel-Tabelle per Serienbrief dynamisch in Word 0 Panix 1220 05. Jul 2011, 12:55
Panix Excel-Tabelle per Serienbrief dynamisch in Word
Keine neuen Beiträge Word Formate: Briefpapier - Druck als PDF und auf vorgedrucktes Papier 4 Aggix 7121 20. Apr 2011, 14:51
MTerhechte Briefpapier - Druck als PDF und auf vorgedrucktes Papier
Keine neuen Beiträge Word Serienbriefe: Serienbrief als einzelne PDFs per e-Mail versenden? 1 marlis 3049 09. Aug 2010, 13:41
Lord_Movie Serienbrief als einzelne PDFs per e-Mail versenden?
Keine neuen Beiträge Word Serienbriefe: WORD -> PDF Hyperlink mit Sprungmarke Nach oben 1 neogalileo 2856 23. Apr 2010, 14:51
Steffen Kuch WORD -> PDF Hyperlink mit Sprungmarke Nach oben
Keine neuen Beiträge Word Serienbriefe: Word-Serienbrief in PDF umwandeln und Versand per Outlook 4 MarcelK 17653 20. Apr 2010, 11:38
Gast Word-Serienbrief in PDF umwandeln und Versand per Outlook
Keine neuen Beiträge Word Serienbriefe: Leerzeile erzeugen wenn Seriendruckfeld leer 1 lasdgj 2957 06. Apr 2010, 17:05
charlybrown Leerzeile erzeugen wenn Seriendruckfeld leer
Keine neuen Beiträge Word Serienbriefe: Serienbrieffunktion: Mail verschicken mit PDF Anhang 1 petrigam 3562 09. Jul 2009, 12:26
olvradam Serienbrieffunktion: Mail verschicken mit PDF Anhang
Keine neuen Beiträge Word Serienbriefe: Seriendruck einzelne Druckjobs erzeugen 1 onit 2723 01. Mai 2009, 20:38
charlybrown Seriendruck einzelne Druckjobs erzeugen
Keine neuen Beiträge Word Serienbriefe: .mdb per e-mail 2 schokomo 1000 17. Apr 2009, 09:20
Gast .mdb per e-mail
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen