Serien-E-Mails mit individuellen Anhängen über Outlook versenden

In diesem Blogbeitrag werde ich einen Makro-Code für Microsoft Office vorstellen, der es ermöglichen soll, Serien-E-Mails mit individuellen Anhängen zu versenden. Was man dazu braucht, ist ein Word-Dokument, eine Excel-Liste und Outlook.

1.

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. Was dort enthalten sein muss, sind ein paar Spalten mit der Anrede, den Vor- und Nachnamen, die E-Mail-Adresse, der E-Mail-Betreff und der Pfad zum Anhang. Wem es zu anstrengend ist, den Dateipfad zu 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. Klickt 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.

Wenn die Anhänge zum Beispiel aus den Vor- und Nachnamen der jeweiligen Person in der Zeile bestehen, könntest du auch mit Hilfe einer Excel-Formel einen Pfad generieren lassen. Das ist dann nützlich, wenn dies bei den restlichen Datensätzen genau dasselbe Schema ist. 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 Datein an die E-Mail anzuhängen. Dafür sollten die Dokumentenpfade in einer Zelle hintereinander, getrennt durch ein Komma, 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 Anhang wird berücksichtigt und versendet.

Wir arbeiten mit diesen einfachen Daten, da dies in der Regel ausreichen dürfte. Wer mehr als diese Daten für die E-Mail braucht oder mehr als einen individuellen Anhang hat, müsste den später folgenden Code anpassen.

Wichtig ist, dass dieses Arbeitsblatt 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.

2.

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“ benutzt wird, wird diese Floskel, natürlich an das Geschlecht angepasst, im Feld %Anrede% mit eingefügt.

Es ist außerdem auch kein Problem, Zeichenketten fett, kursiv oder unterstrichen etc. zu setzen. Auch Hyperlinks werden übernommen. Bilder werden allerdings nicht übernommen!

3.

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:

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 „Einfügen“ und dann auf „Modul“.

Danach öffnet sich wieder ein neues Fenster und dort fügst du nun folgenden Code ein, den du unter dem GitHub-Button findest (Achtung: Dieser Code versendet alle E-Mails automatisch, das heißt es ist keine Einflussnahme mehr auf die E-Mails möglich. Wenn das nicht gewünscht ist, dann sollte eine Code-Variation vom unteren Teil der Seite genommen werden. Alle Codes befinden sich dort außerdem zum Download.):

Hier geht es zum Code: 

Puh, das wird wahrscheinlich jeden erschlagen, der das zum ersten Mal sieht.

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 „Microsoft Excel 16.0 Object Library“, „Microsoft Word 16.0 Object Library“ und „Microsoft Office 16.0 Object Library“ durch einen Haken aktiviert sein. Wenn nicht, durchsuche die Liste nach dem Verweis.

Ist das auch getan, bist du eigentlich soweit, um das Makro zu aktivieren. Dafür kannst du im VBA-Editor auf den grünen Abspiel-Button oben in der Leiste klicken. Sodass öffnet sich zunächst der Datei-Manager und dort musst du die Excel-Liste auswählen. Danach musst du in den Abfrage-Fenstern den Buchstaben der Spalte eingeben, wo die jeweils abgefragten Daten stehen. Das war es. Die E-Mails werden danach sofort versendet, d. h. ein vorheriges Überprüfen der generierten E-Mails ist nicht möglich. Allerdings habe ich für ein vorheriges Überprüfen und manuelles Versenden eine Code-Variation geschrieben, die unten auf der Seite angesehen werden können.

Es kann passieren, dass Fehler auftreten können. 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 ChatGPT (in Kürze erläutert) 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.

Wichtig zu erwähnen ist, dass dieser Code für meinen Anwendungsfall funktioniert hat. Allerdings könnte es für deine Bedürfnisse eben nicht genau passen. Es gibt aber Tools, die dir bei sowas sehr gut helfen können. ChatGPT ist eine KI, die Spracheingaben höchst präzise verarbeiten kann und auf Befehle, Fragen etc. sehr gut antwortet. Auch Code-Anpassungen sind mit ihr möglich. Du könntest also dort den Code eingeben und dazu darum bitten, den Code an deine jeweiligen Wünsche anzupassen. Ein paar Variationen des Codes habe ich allerdings unter auf der Seite mitveröffentlicht.

Wenn du dieses Makro in jedem deiner Dokumente verwenden willst, musst du im VBA-Editor links oben auf das Plus bei  „Normal“ klicken, die dann ebenfalls bei dem darunter befindlichen Ordner und dann „This Document“ anklicken. Danach kannst du, wie oben beschrieben, über „Einfügen“ „Modul“ den Code einfügen.

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

Code-Variationen:

Alle Codes zum Download:

Alle Codes befinden sich als Basic-Dateien in meiner Github-Bereich und können dort angesehen und heruntergeladen werden.

Die Dateien können dann im VBA-Editor von Word unter Datei -> Datei importieren geladen werden. Das Fenster zum Modul öffnet dann nicht automatisch. Man muss es durch Doppelklick selbst öffnen.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht.