Frage von ReneSaince, 36

Word Serienbriefe Makro?

Hallo mal wieder :)

ich habe eine neue Herausforderung für Euch und bin mir nicht sicher, ob das überhaupt funktioniert. Ich habe mit Word basierend auf einer Exceldatenbank Serienbriefe erstellt. Es sind knapp 180 Stück Mit folgendem Code habe ich es endlich geschafft, sie ohne PlugIn als PDF einzeln auf 1-Klick abzuspeichern.

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
   On Error GoTo ErrorHandling
          MsgBox "Serienbriefe werden exportiert. Dieser Vorganag kann einige Minuten dauern - Microsoft Word wird während dieser Zeit ausgeblendet", vbOKOnly + vbInformation
Application.Visible = False

With ActiveDocument.MailMerge
    .DataSource.ActiveRecord = 1
    Do
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = .ActiveRecord
            .LastRecord = .ActiveRecord
            sBrief = Path & .DataFields("ID").Value & ".pdf"
                    
        End With
             
              
        If .DataSource.DataFields("ID").Value > "" Then
            ActiveDocument.SaveAs FileName:=sBrief, FileFormat:=wdFormatPDF
                                End If
        ActiveDocument.Close False
               If .DataSource.ActiveRecord < .DataSource.RecordCount Then
            .DataSource.ActiveRecord = wdNextRecord
        Else
            Exit Do
        End If
    Loop
End With
  ErrorHandling:
Application.Visible = True
 If Err.Number = 76 Then
    MsgBox "Der ausgewählte Speicherort ist ungültig", vbOKOnly + vbCritical
ElseIf Err.Number = 5852 Then
    MsgBox "Das Dokument ist kein Serienbrief"
ElseIf Err.Number = 4198 Then
    MsgBox "Der ausgewählte Speicherort ist ungültig", vbOKOnly + vbCritical
ElseIf Err.Number = 91 Then
    MsgBox "Exportieren von Serienbriefen abgebrochen", vbOKOnly + vbExclamation
ElseIf Err.Number > 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

Das klappt auch ganz gut. Frage kommt im Kommentar

Antwort
von ReneSaince, 28

Kann man in den Code etwas einbauen, das die PDF´s nach dem generieren auch gleichzeitig an die ensprechenden E-Mails verschickt? Meinetwegen nehme ich die E-Mail-Adressen mit in die Briefe mit auf, damit man es eventuell über .datafields lösen kann. Ich hab schon ein bisschen was versucht, doch bin ich kläglich gescheitert.

Ich weiß ich kann das auch alles als Word-Anhang versenden, aber Ihr wisst ja selbst, wie das teilweise beim Empfänger ankommt.

Danke Euch schon mal im Voraus.

Beste Grüße

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten