E-Mails per VBA erstellen mit CreateItem

Wie man mit Outlook eine E-Mail erstellt, diese mit Betreff, Inhalt, Anlagen, Empfänger und so weiter füllt und diese dann verschickt, weiß mittlerweile jeder. Aber was, wenn man das Erstellen von E-Mails automatisieren möchte und dazu VBA nutzen will Beispielsweise, um auf Knopfdruck eine Standardmail an einen Empfänger zu schicken oder auch eine Mail an eine Liste von Kunden zu senden Der vorliegende Artikel zeigt, wie Sie per VBA neue E-Mails erstellen und diese dann entweder zum Betrachten, Nachbearbeiten und zum manuellen Senden anzeigen oder diese sofort auf den Weg zum Empfänger bringen.

Einfache E-Mails programmieren

Unabhängig von den vielen Anwendungsfällen, die wir uns für das VBA-gesteuerte Erstellen von E-Mails vorstellen können, schauen wir uns in diesem Artikel erst einmal die technische Seite an. Dabei wollen wir eine einfache E-Mail wie die aus Bild 1 erstellen – also den Empfänger festlegen und den Betreff und den Inhalt eintragen. Als Abschluss wollen wir noch ein Attachment hinzufügen.

Zu erstellende E-Mail

Bild 1: Zu erstellende E-Mail

Beispielcode in neuem Modul

Den Beispielcode zum Erstellen einer solchen E-Mail bringen wir in einem neuen Modul im VBA-Projekt des VBA-Editors unter, wo wir diesen leicht ausführen können. In weiteren Artikeln schauen wir uns an, wie wir solche und andere Prozeduren über das Ribbon starten können – entweder durch manuelle, benutzerdefinierte Anpassungen oder auch durch das Bereitstellen von Code und Ribbon-Anpassungen mit COM-Add-Ins.

Dazu öffnest Du den VBA-Editor (am schnellsten mit der Tastenkombination Alt + F11) und wählst den Menübefehl Einfügen|Modul aus. Damit Du den gleich erstellten Code später schnell wiederfindest, ändern wir gleich den Namen des neuen Moduls. Dazu markieren wir das Modul im Projekt-Explorer (Strg + R) und passen dann den Namen im Eigenschaften-Bereich an (F4) und geben für die Eigenschaft (Name) den Wert mdlEMailsErstellen ein (siehe Bild 2).

Umbenennen des VBA-Moduls

Bild 2: Umbenennen des VBA-Moduls

Leere E-Mail erstellen

Danach beginnen wir mit dem Erstellen und Anzeigen einer neuen, leeren E-Mail. Dazu legen wir eine neue Prozedur namens LeereEMailErstellen an.

Hier kannst Du nun direkt mit dem Programmieren beginnen, und zwar mit der folgenden kleinen Prozedur. Diese deklariert eine Objektvariable des Typs MailItem und füllt diese durch den Aufruf der Methode Create-Item. Diese Methode können wir zum Erstellen aller in Outlook verwendeter Elemente wie E-Mails, Kontakte, Termine, Aufgaben, Notizen et cetera nutzen.

Dazu müssen wir lediglich den Typ des zu erstellenden Elements in Form einer Konstanten für den einzigen Parameter der Methode CreateItem übergeben. Im Falle einer E-Mail handelt es sich dabei um die Konstante olMailItem. Damit haben wir, auch wenn wir diese noch nicht sehen, bereits eine neue E-Mail erstellt. Um diese sichtbar zu machen, rufen wir noch die Methode Display der Objektvariablen mit der neuen E-Mail auf:

Public Sub LeereEMailErstellen()
     Dim objMailItem As MailItem
     Set objMailItem = Application.CreateItem(olMailItem)
     objMailItem.Display
End Sub

Um diese Prozedur auszuführen, platzieren wir einfach die Einfügemarke innerhalb der Prozedur und betätigen die Taste F5. Das funktioniert wie gewünscht: Es erscheint eine neue, leere E-Mail (siehe Bild 3).

Eine per VBA erstellte E-Mail

Bild 3: Eine per VBA erstellte E-Mail

Parameter der Display-Methode

Die Display-Methode bietet einen Parameter namens Modal an, der standardmäßig auf False eingestellt ist. Wenn Sie diesen auf True einstellen, wird die E-Mail als modales Fenster geöffnet. Das heißt, dass der Benutzer erst mit Outlook weiterarbeiten kann, wenn er die E-Mail auf irgendeine Art geschlossen hat – entweder durch Versenden oder durch anderweitiges Schließen:

objMailItem.Display True

Für Experimente mit den in diesem Artikel vorgestellten Beispielen ist die Einstellung des Parameters Modal auf den Wert True recht praktisch, da das VBA-Fenster immer den Fokus behält und gegebenenfalls geöffnete Inspector-Fenster mit E-Mails verdeckt.

Eigenschaften der E-Mail einstellen

Nun wollen wir die Eigenschaften wie den Empfänger, den Betreff und den Inhalt der E-Mail einstellen. Dazu deklarieren wir in einer neuen Prozedur namens EMailErstellen eine weitere Variable namens strBody (siehe Listing 1). In dieser stellen wir den Inhalt der E-Mail zusammen, bevor wir ihn zuweisen. Zuvor jedoch weisen wir der Eigenschaft To den Empfänger zu und der Eigenschaft Subject den Betreff der E-Mail.

Public Sub EMailErstellen()
     Dim objMailItem As MailItem
     Dim strBody As String
     Set objMailItem = Application.CreateItem(olMailItem)
     With objMailItem
         .To = "andre@minhorst.com"
         .Subject = "Beispielmail"
         strBody = "Hallo André, " & vbCrLf & vbCrLf
         strBody = strBody & "ich hoffe, es geht Dir gut! Anbei findest Du das gewünschte Bild." & vbCrLf & vbCrLf
         strBody = strBody & "Viele Grüße" & vbCrLf
         strBody = strBody & "Klaus"
         .Body = strBody
         .Display
     End With
End Sub

Listing 1: Code zum Erstellen einer Mail mit Empfänger, Betreff und Inhalt

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins DATENBANKENTWICKLER:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar