Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Serienbrief als PDF speichern

Serienbrief als PDF speichern
21.01.2019 08:33:48
Schmalfuß
Hallo,
habe einen Fehler 5631 noch bei folgender Programierung.
Zudem benötige ich noch im Namen der Datei einen Zusatz "DFP_".
Wie und wo kann ich das einfügen?
Hier meine Programierung:

Sub Serienbrief_im_PDF_Format_speichern()
' set variables
Dim iBrief As Integer, sBrief As String
Dim AppShell As Object
Dim BrowseDir As Variant
Dim Path As String
' catch any errors
On Error GoTo ErrorHandling
' determine path
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Speicherort für Serienbriefe auswählen", 0, 16) _
_
_
If BrowseDir = "Desktop" Then
Path = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Else
Path = BrowseDir.items().Item().Path
End If
If Path = "" Then GoTo ErrorHandling
Path = Path & "\Serienbrief-" & Format(Now, "dd.mm.yyyy-hh.mm.ss") & "\"
MkDir Path
On Error GoTo ErrorHandling
' hide application for better performance
MsgBox "Serienbriefe werden exportiert. Dieser Vorganag kann einige Minuten dauern -  _
Microsoft Word wird während dieser Zeit ausgeblendet", vbOKOnly + vbInformation
Application.Visible = False
' create bulkletter and export as pdf
With ActiveDocument.MailMerge
.DataSource.ActiveRecord = 1
Do
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = .ActiveRecord
.LastRecord = .ActiveRecord
sBrief = Path & .DataFields("BestellerNr").Value & "_" & .DataFields(" _
Produktgruppe").Value & ".pdf"
End With
.Execute Pause:=False
If .DataSource.DataFields("BestellerNr").Value > "" Then
ActiveDocument.SaveAs FileName:=sBrief, FileFormat:=wdFormatPDF
End If
ActiveDocument.Close False
If .DataSource.ActiveRecord  0 Then
MsgBox "Unbekannter Fehler: " & Err.Number & " - Bitte Makro erneut ausführen.",  _
vbOKOnly + vbCritical
Else
MsgBox "Serienbriefe erfolgreich exportiert", vbOKOnly + vbInformation
End If
End Sub

Danke schon mal für eure Hilfe.
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Serienbrief als PDF speichern
21.01.2019 08:43:25
Luschi
Hallo Schmalfuß,
wenn ich den Word-Makro-Recorder anschmeiße und eine Datei als PDF-Datei abspeichere, dann _ kommt sowas raus:

ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"F:\Daten\...\hallo_test.pdf", 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:=True
ChangeFileOpenDirectory "F:\Daten\...\"
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Serienbrief als PDF speichern
21.01.2019 09:17:22
Schmalfuß
Und wie füge ich in den Namen nun noch das "DFP_" ein?
AW: Serienbrief als PDF speichern
21.01.2019 09:18:35
Schmalfuß
Sorry aber deine Antwort habe ich jetzt so nicht verstanden und weiß auch nicht was ich mit der Info jetzt machen soll. :-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Serienbrief als PDF speichern: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um einen Serienbrief als PDF zu speichern, kannst Du das folgende VBA-Makro verwenden. Es ermöglicht Dir, jeden Brief einzeln im PDF-Format zu speichern und dabei einen spezifischen Dateinamen festzulegen.

  1. Öffne Microsoft Word und erstelle Deinen Serienbrief.
  2. Öffne den VBA-Editor (ALT + F11).
  3. Füge das folgende Makro ein und passe es nach Deinen Wünschen an:
Sub Serienbrief_im_PDF_Format_speichern()
    Dim iBrief As Integer, sBrief As String
    Dim AppShell As Object
    Dim BrowseDir As Variant
    Dim Path As String

    On Error GoTo ErrorHandling
    Set AppShell = CreateObject("Shell.Application")
    Set BrowseDir = AppShell.BrowseForFolder(0, "Speicherort für Serienbriefe auswählen", 0, 16)

    If BrowseDir = "Desktop" Then
        Path = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Else
        Path = BrowseDir.items().Item().Path
    End If

    If Path = "" Then GoTo ErrorHandling
    Path = Path & "\Serienbrief-" & Format(Now, "dd.mm.yyyy-hh.mm.ss") & "\"
    MkDir Path

    MsgBox "Serienbriefe werden exportiert. Dieser Vorgang kann einige Minuten dauern.", vbOKOnly + vbInformation
    Application.Visible = False

    With ActiveDocument.MailMerge
        .DataSource.ActiveRecord = 1
        Do
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = .ActiveRecord
                .LastRecord = .ActiveRecord
                sBrief = Path & "DFP_" & .DataFields("BestellerNr").Value & "_" & .DataFields("Produktgruppe").Value & ".pdf"
            End With
            .Execute Pause:=False
            If .DataSource.DataFields("BestellerNr").Value > "" Then
                ActiveDocument.SaveAs FileName:=sBrief, FileFormat:=wdFormatPDF
            End If
            ActiveDocument.Close False
        Loop While .DataSource.ActiveRecord < .DataSource.RecordCount

        MsgBox "Serienbriefe erfolgreich exportiert", vbOKOnly + vbInformation
    End With

    Exit Sub
ErrorHandling:
    MsgBox "Fehler: " & Err.Description, vbOKOnly + vbCritical
End Sub
  1. Führe das Makro aus, um Deine Serienbriefe als PDF zu speichern.

Häufige Fehler und Lösungen

  • Fehler 5631: Dieser Fehler tritt auf, wenn ein Problem beim Speichern des Dokuments auftritt. Stelle sicher, dass der Pfad korrekt ist und dass Du die notwendigen Berechtigungen hast.

  • Namenszusatz nicht vorhanden: Wenn Du das „DFP_“ nicht im Dateinamen hast, überprüfe die Zeile im Makro, wo der Dateiname definiert wird. Stelle sicher, dass es korrekt eingefügt ist.


Alternative Methoden

Neben dem VBA-Makro kannst Du auch die integrierte Funktion von Word verwenden, um einen Serienbrief als PDF zu speichern:

  1. Erstelle Deinen Serienbrief.
  2. Gehe zu Datei > Speichern unter.
  3. Wähle PDF aus dem Dropdown-Menü für das Dateiformat.
  4. Klicke auf Speichern.

Diese Methode speichert den gesamten Serienbrief als eine PDF-Datei, statt jedes Dokument einzeln.


Praktische Beispiele

  • Serienbrief erstellen und als PDF speichern: Du kannst das oben stehende Makro anpassen, um den Serienbrief für Bestellungen oder Einladungen zu verwenden.

  • Serienbriefe einzeln als PDF speichern: Wenn Du beispielsweise für jede Bestellung einen eigenen PDF-Dokument benötigst, ist das Makro ideal.


Tipps für Profis

  • Experimentiere mit den Einstellungen im VBA-Makro, um weitere Anpassungen vorzunehmen, wie z.B. die Auswahl des Dateipfads oder das Formatieren des Namens.

  • Nutze die Debugging-Funktion im VBA-Editor, um mögliche Fehlerquellen schneller zu identifizieren.


FAQ: Häufige Fragen

1. Wie kann ich den Speicherort für die PDFs ändern?
Du kannst den Speicherort anpassen, indem Du die Zeile mit Path im Makro änderst, um einen anderen Ordner zu wählen.

2. Ist das Makro mit allen Word-Versionen kompatibel?
Das Makro sollte mit den meisten modernen Versionen von Microsoft Word funktionieren. Stelle sicher, dass Du die entsprechenden Berechtigungen hast, um Makros auszuführen.

3. Kann ich mehrere Serienbriefe gleichzeitig als PDF speichern?
Ja, das Makro speichert jeden Serienbrief einzeln im angegebenen Ordner.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige