Word VBA Snippet zur schnellen PDF Konvertierung

No comment

Wer wie ich häufig darauf angewiesen ist mit Word erstellte Dokumente nach abgeschlossener Arbeit ins PDF Format zu konvertieren, findet vielleicht an diesem VBA Snippet Interesse.

Es ist für Word 2007 entwickelt und spart drei Arbeitsschritte ein.

  1. Word Dokument speichern
  2. PDF erzeugen (überschreiben) und die Vorschau im PDF Reader öffnen
  3. Word beenden

Hier der Quellcode:

Sub PDFandClose()
'
' PDFandClose Makro
' Speichert und erzeugt PDF beim Schließen von Word
' 2016 Christian Falke

'Variablen für Dateipfad
Dim strPfad As String 'Zeichenkette für den Pfad des aktuellen Dokuments
Dim strDok As String 'Zeichenkette für den Namen des aktuellen Dokuments

strPfad = ActiveDocument.Path 'Dokumentpfad ermitteln um auf alle Dokumente angewendet werden zu können.
strDok = Replace(ActiveDocument.Name, ".docx", "") 'Löscht das .docx aus Dateinamen wegen der PDF Konvertierung

'Variablen für die Fehlerbehandlung
Dim Mldg As String

Dim Titel As String
Dim Antwort As Variant

Mldg = "Fehler: Wahrscheinlich ist ein Vorgänger PDF Dokument geöffnet. Bitte PDF Reader schließen und Wiederholen oder Abbrechen"
Titel = "PDF Konvertierungsfehler"




    ActiveDocument.Save 'Speichere .docx
    
    On Error GoTo Konvertierungsfehler 'Bei Problemen
    
    'Erzeuge PDF für Druck und Onlinedarstellung, öffne das Dokument zur Ansicht im PDF Reader
    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
         strPfad & "\" & strDok & ".pdf" _
        , ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
        Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False
        
    Application.Quit 'Beende Word
    
    
Konvertierungsfehler:         'Kann in der Regel die Datei nicht schreiben/überschreiben, PDF geöffnet?

Antwort = MsgBox(Mldg, vbQuestion + vbRetryCancel, Titel) 'Dialogfeld zur Fehlerbehandlung

 If Antwort = vbRetry Then 'Wenn Benutzer PDF geschlossen hat wiederholen, ansonsten endet die Prozedur

    Resume
    
 Else

    Exit Sub
    
 End If

End Sub

Der Code kann einfach als globales Makro in Word gespeichert werden und in dessen Schnellstartleiste eingefügt werden.

 

Wie das Hinzufügen in die Schnellzugriffsleiste funktioniert, kann man hier erfahren.