Personalisierte Serienbriefe in Excel mit VBA erstellen

Personalisierte Serienbriefe sind eine hervorragende Möglichkeit, um mit Kunden, Geschäftspartnern oder Mitarbeitern auf direkte und individuelle Weise zu kommunizieren. Die Erstellung solcher Briefe kann jedoch zeitaufwendig sein, insbesondere wenn für jeden Empfänger unterschiedliche Informationen wie Name und Adresse in die Briefe eingefügt werden müssen. Mit VBA (Visual Basic for Applications) können Sie diesen Prozess in Excel automatisieren und Serienbriefe effizient erstellen. Dieser Artikel zeigt Ihnen, wie Sie mithilfe von VBA Variablen wie Name und Adresse in Textbausteine einsetzen und so personalisierte Serienbriefe oder E-Mails generieren.

Grundlagen der Serienbrief-Erstellung in Excel

Ein Serienbrief besteht in der Regel aus einem Standardtext, in den persönliche Informationen wie Name, Adresse oder andere relevante Daten für jeden Empfänger eingefügt werden. Excel bietet eine ideale Grundlage für die Verwaltung dieser Daten, da es einfach ist, Listen von Empfängern mit den entsprechenden Informationen zu erstellen.

Bevor wir mit dem VBA-Code beginnen, ist es wichtig, dass Ihre Excel-Tabelle richtig strukturiert ist. Eine einfache Struktur könnte folgendermaßen aussehen:

Name

Adresse

Stadt

Postleitzahl

E-Mail

Max Mustermann

Musterstraße 1

Musterstadt

12345

Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.

Anna Beispiel

Beispielstraße 10

Beispielstadt

67890

Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Diese Tabelle enthält die Daten, die in den personalisierten Serienbrief oder die E-Mail eingefügt werden. Nun geht es darum, mithilfe von VBA den Brieftext zu erstellen und die entsprechenden Informationen einzufügen.


Schritt-für-Schritt-Anleitung: Personalisierte Serienbriefe mit VBA erstellen

1. Serienbrieftext vorbereiten

Zuerst benötigen Sie den Text für den Serienbrief. Dieser Text sollte Platzhalter enthalten, an denen die jeweiligen personalisierten Daten eingefügt werden. Ein Beispiel für einen einfachen Serienbrief könnte so aussehen:

"Sehr geehrte/r {Name}, wir möchten Sie herzlich einladen, uns in unserer Filiale in {Stadt} zu besuchen.
Sie finden uns unter folgender Adresse: {Adresse}, {Postleitzahl} {Stadt}.

Mit freundlichen Grüßen

Ihr Unternehmen"


Die Platzhalter {Name}, {Adresse}, {Postleitzahl}, und {Stadt} werden durch die entsprechenden Daten aus der Excel-Tabelle ersetzt.

2. VBA-Code zur Erstellung personalisierter Serienbriefe

Der folgende VBA-Code zeigt, wie Sie den oben genannten Serienbrieftext verwenden und die entsprechenden Platzhalter durch die Informationen aus der Excel-Tabelle ersetzen.

Sub SerienbriefeErstellen()
 Dim ws As Worksheet
 Dim lastRow As Long
 Dim i As Long
 Dim BriefText As String
 Dim PersonalisierterBrief As String
 Dim Name As String, Adresse As String, Stadt As String, PLZ As String

 ' Arbeitsblatt mit den Daten festlegen
 Set ws = ThisWorkbook.Sheets("Empfänger")

 ' Letzte Zeile mit Daten ermitteln
 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

 ' Serienbrief-Text mit Platzhaltern
 BriefText = "Sehr geehrte/r {Name}," & vbCrLf & vbCrLf & _
 "wir möchten Sie herzlich einladen, uns in unserer Filiale in {Stadt} zu besuchen. " & _
 "Sie finden uns unter folgender Adresse: {Adresse}, {PLZ} {Stadt}." & vbCrLf & vbCrLf & _
 "Mit freundlichen Grüßen," & vbCrLf & "Ihr Unternehmen"

 ' Schleife durch alle Empfänger
 For i = 2 To lastRow ' Annahme: Erste Zeile enthält Überschriften
 ' Daten aus der Tabelle lesen
 Name = ws.Cells(i, 1).Value
 Adresse = ws.Cells(i, 2).Value
 Stadt = ws.Cells(i, 3).Value
 PLZ = ws.Cells(i, 4).Value

 ' Platzhalter durch Daten ersetzen
 PersonalisierterBrief = Replace(BriefText, "{Name}", Name)
 PersonalisierterBrief = Replace(PersonalisierterBrief, "{Adresse}", Adresse)
 PersonalisierterBrief = Replace(PersonalisierterBrief, "{Stadt}", Stadt)
 PersonalisierterBrief = Replace(PersonalisierterBrief, "{PLZ}", PLZ)

 ' Den personalisierten Brief anzeigen (alternativ: in ein Dokument schreiben)
 MsgBox PersonalisierterBrief, vbInformation, "Serienbrief für " & Name
 Next i
End Sub

Erläuterung des Codes:

  • Der VBA-Code liest die Daten aus der Excel-Tabelle und ersetzt die Platzhalter im Serienbrieftext durch die entsprechenden Werte aus der Tabelle.
  • Replace(BriefText, "{Name}", Name) sucht nach dem Platzhalter {Name} im Brieftext und ersetzt ihn durch den tatsächlichen Namen des Empfängers.
  • Der personalisierte Brief wird für jeden Empfänger in einer Nachricht (MessageBox) angezeigt. In einer realen Anwendung können Sie den personalisierten Text in ein Dokument oder eine E-Mail schreiben (wie im nächsten Abschnitt beschrieben).

3. Serienbriefe in ein Word-Dokument exportieren

In vielen Fällen möchten Sie den personalisierten Serienbrief nicht nur in einer Nachricht anzeigen, sondern direkt in ein Word-Dokument schreiben. Dies können Sie einfach mit VBA realisieren.

Der folgende Code zeigt, wie Sie die personalisierten Serienbriefe in ein Word-Dokument exportieren:

Sub SerienbriefeNachWord()
 Dim ws As Worksheet
 Dim lastRow As Long
 Dim i As Long
 Dim BriefText As String
 Dim PersonalisierterBrief As String
 Dim Name As String, Adresse As String, Stadt As String, PLZ As String
 Dim wordApp As Object, wordDoc As Object

 ' Arbeitsblatt mit den Daten festlegen
 Set ws = ThisWorkbook.Sheets("Empfänger")

 ' Letzte Zeile mit Daten ermitteln
 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

 ' Serienbrief-Text mit Platzhaltern
 BriefText = "Sehr geehrte/r {Name}," & vbCrLf & vbCrLf & _
 "wir möchten Sie herzlich einladen, uns in unserer Filiale in {Stadt} zu besuchen. " & _
 "Sie finden uns unter folgender Adresse: {Adresse}, {PLZ} {Stadt}." & vbCrLf & vbCrLf & _
 "Mit freundlichen Grüßen," & vbCrLf & "Ihr Unternehmen"

 ' Word-Anwendung starten
 Set wordApp = CreateObject("Word.Application")
 wordApp.Visible = True ' Word sichtbar machen
 Set wordDoc = wordApp.Documents.Add ' Neues Dokument erstellen

 ' Schleife durch alle Empfänger
 For i = 2 To lastRow
 ' Daten aus der Tabelle lesen
 Name = ws.Cells(i, 1).Value
 Adresse = ws.Cells(i, 2).Value
 Stadt = ws.Cells(i, 3).Value
 PLZ = ws.Cells(i, 4).Value

 ' Platzhalter durch Daten ersetzen
 PersonalisierterBrief = Replace(BriefText, "{Name}", Name)
 PersonalisierterBrief = Replace(PersonalisierterBrief, "{Adresse}", Adresse)
 PersonalisierterBrief = Replace(PersonalisierterBrief, "{Stadt}", Stadt)
 PersonalisierterBrief = Replace(PersonalisierterBrief, "{PLZ}", PLZ)

 ' Den personalisierten Brief in das Word-Dokument einfügen
 wordDoc.Content.InsertAfter PersonalisierterBrief & vbCrLf & vbCrLf
 Next i

 ' Word-Dokument speichern
 wordDoc.SaveAs2 ThisWorkbook.Path & "\Serienbriefe.docx"
End Sub

Erläuterung:

  • Der Code erstellt ein neues Word-Dokument und fügt für jeden Empfänger einen personalisierten Brief in das Dokument ein.
  • Am Ende wird das Word-Dokument unter dem Namen „Serienbriefe.docx“ im gleichen Verzeichnis wie die Excel-Datei gespeichert.

4. Serien-E-Mails mit VBA und Outlook versenden

Mithilfe von VBA können Sie nicht nur personalisierte Serienbriefe erstellen, sondern auch Serien-E-Mails versenden. Der folgende Code zeigt, wie Sie mit Outlook personalisierte E-Mails an alle Empfänger in Ihrer Excel-Tabelle senden:

Sub SerienEmailsSenden()
 Dim ws As Worksheet
 Dim lastRow As Long
 Dim i As Long
 Dim EmailBody As String
 Dim PersonalisierteEmail As String
 Dim Name As String, Adresse As String, Stadt As String, PLZ As String, Email As String
 Dim olApp As Object, olMail As Object

 ' Arbeitsblatt mit den Daten festlegen
 Set ws = ThisWorkbook.Sheets("Empfänger")

 ' Letzte Zeile mit Daten ermitteln
 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

 ' E-Mail-Text mit Platzhaltern
 EmailBody = "Sehr geehrte/r {Name}," & vbCrLf & vbCrLf & _
 "wir möchten Sie herzlich einladen, uns in unserer Filiale in {Stadt} zu besuchen. " & _
 "Sie finden uns unter folgender Adresse: {Adresse}, {PLZ} {Stadt}." & vbCrLf & vbCrLf & _
 "Mit freundlichen Grüßen," & vbCrLf & "Ihr Unternehmen"

 ' Outlook-Anwendung starten
 Set olApp = CreateObject("Outlook.Application")

 ' Schleife durch alle Empfänger
 For i = 2 To lastRow
 ' Daten aus der Tabelle lesen
 Name = ws.Cells(i, 1).Value
 Adresse = ws.Cells(i, 2).Value
 Stadt = ws.Cells(i, 3).Value
 PLZ = ws.Cells(i, 4).Value
 Email = ws.Cells(i, 5).Value

 ' Platzhalter durch Daten ersetzen
 PersonalisierteEmail = Replace(EmailBody, "{Name}", Name)
 PersonalisierteEmail = Replace(PersonalisierteEmail, "{Adresse}", Adresse)
 PersonalisierteEmail = Replace(PersonalisierteEmail, "{Stadt}", Stadt)
 PersonalisierteEmail = Replace(PersonalisierteEmail, "{PLZ}", PLZ)

 ' E-Mail erstellen und senden
 Set olMail = olApp.CreateItem(0)
 With olMail
 .To = Email
 .Subject = "Einladung zu unserem Event"
 .Body = PersonalisierteEmail
 .Send
 End With
 Next i
End Sub

Erläuterung:

  • Der Code verwendet Outlook, um personalisierte E-Mails an die Empfänger in der Excel-Tabelle zu senden.
  • Die Platzhalter im E-Mail-Text werden durch die entsprechenden Daten ersetzt, und die E-Mail wird an die in der Tabelle angegebene E-Mail-Adresse versendet.

Fazit

Mit VBA in Excel können Sie den Prozess der Erstellung personalisierter Serienbriefe oder E-Mails deutlich vereinfachen und automatisieren. Indem Sie Platzhalter durch individuelle Daten ersetzen, können Sie schnell und effizient individuelle Nachrichten erstellen, ohne jeden Brief oder jede E-Mail manuell bearbeiten zu müssen.

Partnerlinks

Relevante Artikel

  • Zeichen in String zählen

    Dieser Beitrag zeigt verschiedene Möglichkeiten, um bestimmte Zeichen in einem String zu zählen. So soll beispielsweise im...

  • Umwandeln von Umlauten

    Das folgende Makro wandelt Umlaute wie z. B. ä in ae um. Fügen Sie dieses Makro einfach in ein Modulblatt ein. Umgewandelt...

  • Text und Werte in Spalten aufteilen

    Dieses Makro verteilt alle in Spalte A, beginnend ab Zelle A1, eingegebenen Werte (Texte, Zahlen etc.) in einzelne Zellen....

  • CSV-Datei mit UniCode Zeichen erzeugen

    Dieses Beispiel zeigt, wie CSV-Dateien mit UniCode-Zeichen erzeugt werden können. Im Standardzeichensatz können in...

  • Zellen mit Hochkomma per VBA ermitteln

    Wenn Sie in Excel vor einer Beliegiben Zeichen- oder Ziffernfolge ein Hochkomma ( ' ) setzen, dann wird der Text oder die...

Wir benutzen Cookies
Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.