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).