|  
                                             Guten Tag,  
ich bin ein versierter Office-Anwender, nicht ganz ungeschickt beim Umgang mit Programmierungen, aber was VBA angeht leider nur mit absoluten Einsteigerkenntnissen gesegnet. Dennoch würde ich gern für folgendes Projekt: 
- Serienbrief als PDF einzelne pdf-Datei speichern und anschließend 
- als indivuellen Anhang an die jeweils einen Empfänger versenden 
meine VBA Code, der mit der Excel Datei funktioniert in die Serienbriefausgangsdatei nach Word übertragen: 
Sicherlich gibt es auch Codes, die die oben genannten Funktionen in einem Makro bewältigen, falls es einfacher ist, bin ich auch für einen Tipp in diese Richtung dankbar - ansonsten soll es eben die 2 Wege Methode bleiben. 
Ausgangsituation: ich habe eine Excel Datei, mit Namen, Mailadressen, etc. 
Diese wird als Datenquelle für einen Serienbrief verwendet, der dann in einzelnen pdf-Dokumenten von einem Makro in einen dafür vorgesehenen Ordner gespeichert wird. Der Dateiname generiert sich aus Seriendruckfeldern (Datum und Name), so dass auch der Pfad zur jeweiliegen Anlage bereits in der Tabelle (automatisiert über Verketten) hinterlegt ist. 
 
Sub Serienbrief()
'Definition der Variablen
Dim iBrief As Integer, sBrief As String
Dim AppShell As Object
Dim BrowseDir As Variant
Dim Path As String
'Errhorhandler
On Error GoTo ErrorHandling
'Auswahlfenster Pfad - Windows-Fenster zur Pfad-Auswahl wird während Programm-Ausführung eingeblendet
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
'Unterordner definieren, in welchen die PDF-Dateien gespeichert werden sollen
'=========================================================================
Path = Path & "\Serienbrief_" & Format(Now, "yyyymmdd_hhmm") & "\"
'Erstellt den Unterordner
MkDir Path
On Error GoTo ErrorHandling
'Applikation ausblenden - für bessere Performance
MsgBox "Serienbriefe werden exportiert. Dieser Vorgang kann einige Minuten dauern - Microsoft Word wird während dieser Zeit ausgeblendet", vbOKOnly + vbInformation
Application.Visible = False
'Erstelle Serienbrief und Export als PDF
With ActiveDocument.MailMerge
.DataSource.ActiveRecord = 1
Do
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = .ActiveRecord
.LastRecord = .ActiveRecord
'Dateinamen definieren für PDF-Dateien
'============================================================
sBrief = Path & .DataFields("Anreisedatum").Value & "_" & .DataFields("Anreisende_Gäste").Value & ".pdf"
End With
.Execute Pause:=False
If .DataSource.DataFields("Anreisende_Gäste").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
'Nächster Datensatz
Loop
End With
'Errorhandling
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
 
Mithilfe eines zweiten Codes wird dann die Mail mit dem individuellen Anhang erzeugt: 
 
Sub Excel_Serial_Mail()
 
    Dim objOLOutlook As Object
    Dim objOLMail As Object
    Dim lngMailNr As Long
    Dim lngZaehler As Long
    Dim strAttachmentPfad1 As String
    Dim strSignature As String
    Dim Pfad1 As String
    
 
    On Error GoTo ErrorHandler
 
    Set objOLOutlook = CreateObject("Outlook.Application")
 
    lngMailNr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    
    
    For lngZaehler = 2 To lngMailNr
    strAttachmentPfad1 = Cells(lngZaehler, 15)
        If Cells(lngZaehler, 1) <> "" Then
        
         
                Set objOLMail = objOLOutlook.CreateItem(olMailItem)
                With objOLMail
                    .BodyFormat = olFormatHTML
                    .Display
                End With
                    strSignature = objOLMail.HTMLBody
                With objOLMail
                    .To = Cells(lngZaehler, 10)
                    .CC = ""
                    .BCC = ""
                    .Subject = "Test Mail"
                    .BodyFormat = olFormatHTML
                    .HTMLBody = "<font face=""calibri"" style=""font-size:11pt;"">" & _
                        "Sehr geehrte Damen und Herren,<br><br>" & _
                        "in der Anlage senden wir Ihnen die Anreiseerinnerung für Ihre:n Auszubildende:n. <br>" & _
                        "Für Rückfragen stehen wir gern zur Verfügung.</font>" & _
                        strSignature
                    .Attachments.Add strAttachmentPfad1
                    .Send
                    '.Display
 
                End With
           
            Set objOLMail = Nothing
       End If
    Next lngZaehler
    Set objOLOutlook = Nothing
 
Exit Sub
 
ErrorHandler:
    MsgBox Err.Number & " " & Err.Description & " " & Err.Source, _
        vbInformation, "Ein Fehler ist aufgetreten"
Exit Sub
 
End Sub
 
 
Soweit so gut. Was mir nun nicht gelingt, ist den zweiten Code in Word zu transferieren, da dort die Bezüge zur Arbeitsmappe verloren gehen. Hier fehlen mir die tiefer gehenden Kenntnisse über die Definition von Variablen etc. damit ich die Seriendruckfelder der Seriendruckdatei als Variablen für das Mailing-Makro verwenden kann. 
Prinzipiell macht es natürlich keinen Unterschied, den Mailversand aus Word oder Excel anzustoßen, dennoch wäre es für das Handling meiner Verwaltungskräfte eine deutliche Erleichterung, wenn beides aus der Serienbriefdatei zu starten wäre. 
Ich freue mich über eine Unterstützung und bedanke mich schon jetzt! 
 
Herzliche Grüße 
Stefan Kaiser 
     |