Word: PDF per VBA erzeugen

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Wenn man ein Dokument per VBA zusammengestellt hat, möchte man dieses gegebenenfalls auch noch weiterverarbeiten. Zum Beispiel, indem man es unter einen bestimmten Dateinamen speichert. Eine weitere Anforderung könnte sein, dass man das Dokument direkt als PDF-Dokument sichern möchte. Wie das gelingt, schauen wir uns in diesem Artikel an. Und wir gehen noch einen Schritt weiter und betrachten, wie wir bestimmte Bereiche oder auch jede einzelne Seite in einem PDF-Dokument speichern können.

In vielen Fällen sollen Word-Dokumente nicht im Format .docx weitergegeben werden. Einer der Gründe ist, dass wir nicht wollen, dass der Empfänger das Dokument bearbeiten oder die Inhalte auf einfache Weise extrahieren kann. Eine gute Lösung ist dann die Erstellung eines PDF-Dokuments. Dieses kann man auf allen Systemen mit entsprechenden Readern anzeigen und auch im Webbrowser erscheinen diese ohne Probleme.

Während man meist komplette Dokumente in eine PDF-Datei exportieren möchte, kommt es auch vor, dass ein Word-Dokument bereits mehrere Teildokumente enthält, die einzelnen exportiert werden sollen. Und ein weiterer Fall ist, dass wir nur bestimmte Seiten aus einem Dokument extrahieren wollen, andere jedoch nicht.

Dokument als .dotm speichern

Um einem eventuellen Verlust des nachfolgend erstellten VBA-Codes vorzubeugen, haben wir das Dokument direkt als .dotm-Dokument gespeichert. Die Prozeduren haben wir in das Modul ThisDocument eingefügt.

Komplettes Dokument als PDF speichern

Wir beginnen mit dem einfachsten Fall: Wir wollen alle Seiten des Dokuments in einer PDF-Datei speichern. Diesen Fall haben wir in der Prozedur PDFSpeichern aus Listing 1 abgedeckt. Hier deklarieren wir eine Variable des Typs Word.Document, um das zu extrahierende Dokument zu referenzieren. Das erledigen wir anschließend über die Eigenschaft ActiveDocument, die einen Verweis auf das aktuell angezeigte Dokument liefert.

Public Sub PDFSpeichern()
     Dim doc As Word.Document
     Dim strDateipfad As String
     Set doc = ActiveDocument
     strDateipfad = doc.Path & "\Export.pdf"
     doc.ExportAsFixedFormat OutputFileName:=strDateipfad, ExportFormat:=wdExportFormatPDF
     Set doc = Nothing
End Sub

Listing 1: Speichern des kompletten Dokuments

Schließlich wollen wir noch den Namen der zu erstellenden Datei definieren. Die neue Datei soll im gleichen Verzeichnis wie das Original landen. Dieses ermitteln wir mit doc.Path. Fügen wir noch \Export.pdf an, erhalten wir den vollständigen Pfad.

Die eigentliche Arbeit übernimmt die Methode ExportAsFixedFormat des Document-Objekts. Dieser übergeben wir für den Parameter OutputFileName den Pfad aus der Variablen strDateipfad und als ExportFormat den Wert wdExportFormatPDF.

Das Ausführen der Prozedur sorgt für das Anlegen der Datei im gleichen Verzeichnis wie die Originaldatei.

PDF unter gleichem Namen speichern

Wir können noch ein wenig verfeinern, wenn wir wollen, dass das Dokument unter dem gleichen Namen wie das Original gespeichert wird – nur mit der Dateiendung .pdf statt.docx.

Dazu ermitteln wir mit doc.Name den Namen des Dokuments und ersetzen mit der Replace-Methode die Dateiendung .docx durch .pdf.

Damit wir den Code überhaupt ausführen können, verwenden wir eine Word-Datei mit der Dateiendung .docm. Also ersetzen wir auch diese Dateiendung noch durch .pdf (siehe Listing 2).

 

Schreibe einen Kommentar