Serien-E-Mails über Outlook

In diesem Blogbeitrag werde ich einen Makro-Code für Microsoft Office vorstellen, mit dem du Serien-E-Mails mit individuellen Anhängen versenden kannst. Was man dazu braucht, ist ein Word-Dokument, eine Excel-Liste und Outlook.

Was sind Makros für MS Office?

VBA-Makros sind kleine Programme, die man in Microsoft Office-Anwendungen wie Excel oder Word erstellen und ausführen kann. Mit VBA-Makros kann man automatisch wiederkehrende Aufgaben erledigen, komplexe Berechnungen durchführen oder interaktive Benutzeroberflächen gestalten. VBA-Makros sind nützlich, weil sie Zeit und Mühe sparen, Fehler vermeiden und die Produktivität steigern.

Voraussetzungen: Word, Excel und Outlook

  • Word benötigst du für den E-Mail-Inhalt. Schreibe dort wie gewohnt deine Nachricht mit Anrede, Inhalt und Abschiedsformel.
  • Excel brauchst du, um die nötigen Daten für die Serien-E-Mails bereitzustellen. Man braucht also u. a. eine Spalte für Anrede, Vorname, Nachname, E-Mail-Adresse, Betreff und Anhang.
  • Outlook wird benötigt, um die generierten E-Mails zu versenden.

Excel-Liste und Anhänge vorbereiten

Als erstes brauchst du eine Excel-Liste, welche die nötigen Informationen enthält. Das Makro bezieht die nötigen Daten nämlich aus dieser Tabelle. Welche Spalten die Excel-Tabelle enthalten kann oder muss, findest du in der folgenden Tabelle:

Spalte (Kopf) Zweck Pflicht? Beispiel/Inhaltshinweise
E‑Mail Empfängeradresse (.To) Ja
Betreff Betreffzeile Ja "Ihre Unterlagen 2025"
Anhang / Anhänge Dateipfade pro Zeile Optional C:\A\1.pdf; C:\A\2.pdf
CC Kopie‑Empfänger Optional ;
BCC Blindkopie Optional
Anrede Anrede‑Quelle Optional "Herr"/"m"/"Frau"/"w" (für formelle Logik)
Titel Titel vor dem Namen Optional "Dr."
Vorname Vorname Optional "Max"
Nachname Nachname Optional "Mustermann"
Unternehmen/Unternehmensname Firmenname Optional "Beispiel GmbH"
Sendezeitpunkt Geplanter Versand Optional Gültiges Datum/Uhrzeit, siehe unten

Es müssen nicht alle Spalten existieren! Bis auf E-Mail und Betreff ist der Rest optional. Zudem muss auch nicht jede Zelle Werte enthalten. Die Spaltennamen sollten wie im Bild verwendet werden, damit sie vom Code automatisch erkannt werden. Wenn eine abweichende Bezeichnung gewählt wird, muss man ggf. in einem Fenster den Spaltenbuchstaben angeben, in welcher Spalte sich die Information befindet.

Beispiel einer Excel-Tabelle

Wem es zu anstrengend ist, den Dateipfad aufzuschreiben, kann auf einen kleinen Trick zurückgreifen. Gehe zu dem Reiter „Einfügen“ und wähle ganz rechts „Objekt“  (steht neben Kopf- und Fußzeile) aus. Im neuen Fenster klickst du dann auf „Aus Datei erstellen“ und dann auf „Durchsuchen“. Nun wählst du ganz einfach die gewünschte Datei aus. Klicke auf „Auswählen“. Danach wird dir in der Zeile neben „Durchsuchen“ der Pfad zur Datei angezeigt. Den kannst du kopieren und in die entsprechende Zelle legen.

Alternativ kannst du im Datei Explorer die Datei auswählen und dort, z. B. über das Kontextmenü, den Pfad kopieren. Denn Pfad kannst du in Excel einfügen.

Wenn die Anhänge zum Beispiel aus den Vor- und Nachnamen der jeweiligen Person in der Zeile bestehen, könntest du auch mithilfe einer Excel-Formel einen Dateipfad generieren lassen. Das ist besonders dann nützlich, wenn bei den restlichen Datensätzen genau dasselbe Schema verwendet wird. Eine Formel könnte dann so aussehen:

=“D:\Dokumente\“&D2&“_““C2&“.pdf“

Diese könnte man dann auf die folgenden Zellen anwenden und so schnell kann man die Dateipfade erstellen. Sollte es ein generischer Dateiname sein, nur die Nummer ist jeweils fortlaufend, dann kann man den Dateipfad auch einmal in eine Zelle schreiben und die Zelle dann auf die anderen Zellen automatisch damit ausfüllen lassen.

Es ist auch möglich, mehrere Dateien an die E-Mail anzuhängen. Dafür sollten die Dokumentenpfade in einer Zelle hintereinander, getrennt durch ein Komma oder Semikolon, folgen. Es sollte also bspw. so aussehen: D:/Dokumente/Test1.pdf,D:/Dokumente/Test2.pdf
Bei diesem Code müssen allerdings nicht zwingend mehrere Dateien angehängt werden. Auch ein einziger Anhang wird berücksichtigt und versendet. Nach dem Komma als Trennzeichen kann auch ein Leerzeichen folgen. Die Pfade können auch in Anführungszeichen stehen (gerade, wenn man den Pfad aus dem Datei Explorer kopiert).

Ich empfehle, dass das Arbeitsblatt mit den Kontaktinformationen an erster Stelle kommt. Solltest du also eine Excel-Datei mit mehreren Arbeitsblättern haben, so verschiebe das Blatt mit den Daten an Position 1. Ansonsten wirst du im späteren Prozess auch gefragt, aus welchem Arbeitsblatt die Daten gezogen werden sollen.

Für mehr technische Details kannst du auch die Dokumentation auf GitHub nutzen.

E-Mail-Text in Word mit Platzhaltern erstellen

Danach kannst du deinen E-Mail-Text in Word schreiben. Wichtig zu beachten ist, dass wir nicht mit der Sendungs-Funktion in Word arbeiten. Seriendruckfelder bzw. Platzhalter werden also nicht über diese Funktion eingefügt, sondern als Text - und zwar wie folgt: Nehmen wir an, wir wollen die Grußformel schreiben, dann schreiben wir folgendes:

%Anrede% %Titel% %Vorname% %Nachname%,
wir freuen uns, Ihnen bekannt geben zu dürfen …

Diese Platzhalter werden später durch das Makro für jede E-Mail individuell anhand der Excel-Liste ersetzt. Da hier davon ausgegangen wird, dass die geläufige Grußformel „Sehr geehrte/r Frau/Herr“ benutzt wird, wird diese Floskel im Feld %Anrede% automatisch mit eingefügt. Ob die weibliche oder männliche Form der formellen Anrede genutzt wird, richtet sich danach, ob im Feld „Anrede“ Herr oder Frau genutzt wird. Möchte man nicht mit der formellen Anrede arbeiten, kann in diesem Feld auch eine eigene Anredeform eingetragen werden. Die eigene Anrede muss dann in der Excel-Spalte „Anrede“ vorhanden sein. Später im Prozess des Codes wirst du gefragt, ob du standardmäßig die formelle Anrede oder eine eigene Anrede verwenden willst.

Es ist außerdem auch kein Problem, Zeichenketten fett, kursiv, unterstrichen, mit einer anderen Textfarbe oder einer Texthervorhebungsfarbe zu setzen. Auch Hyperlinks, (un)geordnete Aufzählungs- bzw. Nummerierungslisten (ggf. mit mehreren Ebenen) werden übernommen. Die Schriftart und die Schriftgröße werden auch abgebildet, solange es im Dokument einheitlich ist. Bilder werden auch übernommen!

Makro-Datei herunterladen

Lade dir meine Code-Datei bzw. Makro-Datei herunter, welche die notwendigen Funktionen bereitstellt. Diese Datei findest du auf meiner GitHub-Seite:

Auf meiner GitHub-Seite musst du zuerst auf die Code-Datei klicken (wenn du über den Button gehst, gelangst du direkt zum Code):

GitHub Seite

Hiernach musst du nur noch die Datei über den Download-Button rechts oben herunterladen (ggf. noch dem Browser bestätigen, dass du diese Datei wirklich herunterladen/behalten möchtest).

GitHub Download

Makro in Word importieren

Jetzt kommt der spannende Teil: Das Makro muss in die Word-Datei eingefügt und ausgeführt werden. Im Folgenden erkläre ich, wie man dies bewerkstelligt.

Um ein VBA-Makro in Word einzufügen, musst du zunächst den Reiter „Entwicklertools“ zum Menü hinzufügen. Das geht so:

  1. Klicke auf die Registerkarte „Datei“ und dann auf „Optionen“.
  2. Wähle im Dialogfeld „Word-Optionen“ die Kategorie „Menüband anpassen“ aus.
  3. Aktiviere im rechten Bereich unter „Hauptregisterkarten“ das Kontrollkästchen „Entwicklertools“.
  4. Klicke auf „OK“. Nun siehst du den Reiter „Entwicklertools“ im Menü

Für eine bebilderte Anleitung kannst du auch die folgende Webseite aufrufen, die das bereits sehr gut dargelegt hat: https://www.tecchannel.de/a/entwicklertools-aktivieren,3278588

Sodann kommen wir zum nächsten Schritt. Um ein VBA-Makro zu erstellen oder einzufügen, musst du den Visual Basic-Editor öffnen:

Visual Basic Editor öffnen

Klicke auf diese Schaltfläche und es müsste sich ein neues großes Fenster mit dem Titel „Microsoft Visual Basic for Applications“ öffnen. Gehe dann oben auf „Datei“ und wähle „Datei importieren“ aus.

Datei importieren

Wähle in deinen Dateien die eben heruntergeladene Code-Datei mit der Dateiendung .bas aus.

Hiernach müsste nun links unter „Module“ die Datei „Serienmails“ erscheinen. Diese öffnest du, indem du hierauf doppelklickst.

Alternativ kannst du den Code bei GitHub auch kopieren und in ein neues Modul einfügen. Klicke dafür im VBA-Editor auf „Einfügen“ und dann auf Modul. Dieses Modul müsste dann links erscheinen und „Modul1“ heißen. Dies musst du öffnen und dann den kopierten Code auf GitHub dort einfügen. Ggf. musst du noch die erste Codezeile löschen, welche den Modulnamen „Serienmails“ festlegt.
Vorteil dieser Variante: Die deutschen Umlaute werden hier bewahrt.

Hast du den Code eingefügt, fehlt noch eine kleine Sache. Und zwar gehst du oben auf „Extras“ und dann zu „Verweise“. In der Liste muss auf jeden Fall aktiviert sein:

  • Microsoft Excel 16.0 Object Library
  • Microsoft Word 16.0 Object Library
  • Microsoft Outlook 16.0 Object Library
  • Microsoft Office 16.0 Object Library

Wenn nicht, durchsuche die Liste nach dem Verweis. In dem letzten Bild siehst du, wie es aussieht, wenn diese Verweise aktiviert sind.

Ist das auch getan, bist du eigentlich soweit, um das Makro zu aktivieren.

Makro ausführen

Im VBA-Editor kannst du auf den grünen Abspiel-Button oben in der Leiste klicken. Sodann öffnet sich zunächst der Datei-Manager und dort musst du die Excel-Liste auswählen. Beantworte die Abfragefenster, die sich öffnen. Je nach dem, was du ausgewählt hast, werden die E-Mails nur generiert oder sofort versendet.

Für Einzelheiten zum Programmablauf siehe die Stelle in der GitHub-Dokumentation.

Es kann passieren, dass Fehler auftreten. So kann bspw. ein Dateipfad nicht gültig sein. Das Programm sagt dir dann, an welcher Stelle dieser Fehler vorliegt, sodass du ihn berichtigen kannst. Das Programm beendet sich dann zunächst. Wenn die Fehler behoben sind, kannst du das Makro erneut beginnen lassen. Ich habe versucht, die Fehlermeldungen so genau wie möglich, aber auch nicht zu überfrachtet, zu schreiben.

Falls dir jedoch im VBA-Editor Fehler angezeigt werden, dann solltest du vielleicht einen Fachkundigen oder ein KI-Tool wie ChatGPT fragen. Sollte jedoch bei der Stelle:

Set fd = Application.FileDialog(msoFileDialogFilePicker)

ein Fehler angezeigt werden, der sinngemäß lauten könnte „Objektverweis ungültig“, dann solltest du überprüfen, ob die Verweise, die ich oben genannt habe, aktiviert sind. Wenn dies so ist, dann sollte der PC neu gestartet werden. Das hat bei mir geholfen.

Ebenfalls kann es passieren, dass an der Stelle:

lastRow = xlWS.Cells(Rows.Count, 1).End(xlUp).Row

eine Fehlermeldung angezeigt wird. In dem Fall klickst du bei der Fehlermeldung auf „Beenden“ und drückst nochmal auf den Abspiel-Button. Dann sollte der Code richtig laufen.

Der Code ist mittlerweile recht weit entwickelt, doch mag er nicht jeden Anwendungsfall abdecken. Hier kann heutzutage die KI sehr gute Dienste leisten, um das Programm auf deinen Anwendungsfall anzupassen.

Wenn du dieses Makro in jedem deiner Dokumente verwenden willst, musst du im VBA-Editor links oben auf das Plus bei  „Normal“ klicken, dann ebenfalls bei dem darunter befindlichen Ordner und dann „This Document“ auswählen. Danach kannst du, wie oben beschrieben, über „Einfügen“ „Modul“ den Code einfügen. Auch kannst du dort bereits, auch ohne Anlegen des Moduls, die Verweise einrichten. So müssten  die Verweise in jeder Datei bereits aktiviert sein.

Möchtest du nur dieses eine Dokument mit dem Makro abspeichern, musst du darauf achten, dass es als .docm-Datei (Word-Dokument mit Makros) gespeichert wird.

Download und Bezugsquellen

Der Code befindet sich als Basic-Dateien in meinem GitHub-Bereich und kann dort angesehen und heruntergeladen werden.

Supporte mich

Supporte meinen frei verfügbaren Content 🙂

Dieser Artikel wurde zuletzt aktualisiert am

Verwandter Beitrag