Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Serienbrief mit Anhang per Mail (personalisiert)
29.03.2017 16:27:18 Matze
NotSolved
03.04.2017 19:13:01 BigBen
NotSolved

Ansicht des Beitrags:
Von:
Matze
Datum:
29.03.2017 16:27:18
Views:
854
Rating: Antwort:
  Ja
Thema:
VBA Serienbrief mit Anhang per Mail (personalisiert)

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Serienbrief mit Anhang per Mail (personalisiert)
29.03.2017 16:27:18 Matze
NotSolved
03.04.2017 19:13:01 BigBen
NotSolved