Word 2007 Serienbrief, fuer jeden Datensatz eine PDF erstellen?
Ich habe eine Serienbrief mit Word 2007 erstellt. Ich moechte nun für jeden Datensatz eine PDF-Datei erstellen bzw. abspeichern. Der Name des PDFs soll in einem Datenfeld des Serienbriefes definiert werden. Als Datenquelle benutze ich eine Exceltabelle. Die PDF-Erweiterung für Office 2007 habe ich installiert, aus Word kann ich direkt als PDF speichern. Hat jemand eine Idee für ein VBA-Skript? Das Skript müsste alle Datensätze durchlaufen und jedes Dokument als PDF speichern.
Antworten
Ich habe ein kleines Makro, dass es ermöglicht fuer jeden Datensatz ein PDF zu erstellen. Es erstellt im Verzeichnis c:\serienpdf eine PDF-Datei. Der Name des PDF ist aus dem Seriendruckfeld 'name' meiner Exceldatei entnommen. Es wir an den name noch eine laufende Zahl angehängt, um doppelte Dateinamen zu vermeiden.
Vorraussetzung:
a. in der Exceldatei gibt es eine Spalte 'name' bzw. das Makro wird entsprechend geändert.
b. Das Verzeichnis c:\serienpdf existiert. Der Pfad kann im Moakro geändert werden.
Public Sub SerienbriefdruckinDateien()
Dim Brief As String
On Error GoTo Fehler
Application.Visible = False
pfad = "C:\ serienpdf\"
i = 1
With ActiveDocument.MailMerge
.DataSource.ActiveRecord = 1
Do
With .DataSource
.FirstRecord = .ActiveRecord
.LastRecord = .ActiveRecord
Brief = pfad & ".DataFields("name").Value & "-" & i & ".pdf"
End With
ActiveDocument.ExportAsFixedFormat OutputFileName:= Brief, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=_
wdExportOptimizeForPrint,Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
If .DataSource.ActiveRecord < .DataSource.RecordCount Then
.DataSource.ActiveRecord = wdNextRecord
Else
Exit Do
End If
i = i + 1
Loop
End With
Fehler:
Application.Visible = True
End Sub
Hallo trainer,
kannst du auch einen fehlerfreien Quellcode posten? Allein schon beim einfügen deines Codes sind mehrere Zeilen rot.
danke, hat super fuktioniert, habe schon einige Zeit erfolglos nach einer Lösung gesucht, und viele Ansätze gefunden die wenig elegant waren. Der arrogante Kommentar da oben wegen der Fehler : Also
das "<" umzuschreiben ist auf ein "<" Zeichen, was ja nur vom Kopieren kommt , und das löschen dieses Hochkommas vor .DataFields("name").Value , was man ja ohnehin ändern muss , weil dieses Feld ja nicht vorhanden sein muss
wenn man nicht einmal die simplesten Änderungen im Code vornehmen kann , sollte man vielleicht einmal zurück zum Grundkurs ;-))


