Hallo zusammen,
ich versuche schon seit Stunden etwas hinzubekommen.
Ich hoffe mir kann jemand helfen!
Aber erstmal die Daten:
Ein Serienbrief wurde in Word 2010 mit einer Excel-Datenbank erstellt.
Seriendruckfelder: Anrede, Vorname, Nachname. Bis hierhin Standard.
Ziel des Codes:
1. Serienbrief in einzelne Datensätze aufteilen
2. Den einzelnen Datensatz in PDF umwandeln
3. E-Mail erstellen und PDF anhängen
4. E-Mail personalisieren
Punkt 1 - 3 funktionieren ohne Probleme. E-Mails mit dem personalisierten PDF werden erstellt, werden geöffnet und sind bereit zum Versand.
Meine Fragen:
Wie bekomme ich die E-Mailadressen (ebenfalls im Excelfile) in meine << Mail.To = "mail@provider.de" >> (kompletter Code siehe unten)
Wie bekomme ich die Felder Anrede und Namen dieser erstellten E-Mail personalisiert? << Mail.Body = "Sehr geehrte [Anrede] [Vorname] [Nachname],......" >>
Habe schon viele Möglichkeiten durch, aber nichts funktionierte..
Ziehen der Felder direkt aus dem Word-Dokument { MERGEFIELD Name}?? Über Stringvariablen?? Nichts funktioniert. Kenn mich leider auch nicht so gut aus.
Code bisher:
Sub EinzelnerDatensatz()
Dim Pfad As String
Dim Seriendruckfeld As String
Seriendruckfeld = "Nummer"
Pfad = "C:\Daten\E-Mail-Serienbrief"
With ActiveDocument.MailMerge
If .MainDocumentType = wdNotAMergeDocument Then
MsgBox "Das aktive Dokument ist kein Seriendruckhauptdokument."
Exit Sub
End If
.DataSource.ActiveRecord = wdLastRecord
anzahl = .DataSource.ActiveRecord
If anzahl = 0 Then
MsgBox "Die Datenquelle ist leer."
Exit Sub
End If
.Destination = wdSendToNewDocument
For i = 1 To anzahl
.DataSource.ActiveRecord = i
dsname = Pfad & _
.DataSource.DataFields(Seriendruckfeld).Value & ".pdf"
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
.Execute
ActiveDocument.Range.Find.Execute FindText:="^b", replacewith:=""
SaveAsPDF (dsname)
ActiveDocument.Close (wdDoNotSaveChanges)
Next i
.DataSource.FirstRecord = 1
End With
End Sub
Sub SaveAsPDFandMail(FilePath As String)
'
Dim outl As Object
Dim Mail As Object
Dim strDatei As String
strDatei = "C:\Daten\E-Mail-Serienbrief\Preise2017.pdf"
ActiveDocument.ExportAsFixedFormat OutputFileName:=strDatei, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=False, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
' Mail generieren
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "Preise 2017 - Firma XYZ"
Mail.Body = "Sehr geehrte Damen und Herren,......"
Mail.To = "mail@provider.de"
Mail.Attachments.Add strDatei
Mail.Display
End Sub
Danke im Voraus
Gruß Matze
|