Benutzerdefinierte Suche


Word 2007 Serienbrief, fuer jeden Datensatz eine PDF erstellen? 

Frage von alfons am 2. August 2010 07:46

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

Computerfrage bewerten
Computerfrage bewerten

0%
100%

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

Antwort von trainer am 4. August 2010 08:32

Computerfrage bewerten
Computerfrage bewerten

0%
0%

Hallo trainer,

kannst du auch einen fehlerfreien Quellcode posten? Allein schon beim einfügen deines Codes sind mehrere Zeilen rot.

Antwort von savtiger am 4. Februar 2011 09:39

Computerfrage bewerten
Computerfrage bewerten

0%
0%

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 "&lt;" 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 ;-))

Antwort von j_back am 8. Juli 2011 14:00

Frage beantworten: bitte -> [login/anmelden]

suchen

 
 

In FAQ stöbern

FAQ tags