VBA wird oft genutzt, um routinemäßige Aufgaben zu automatisieren und sich den Alltag zu erleichtern. Auch in Outlook kann man sich das Leben leichter machen mit ein paar gut eingesetzten VBA-Skripten. Eine Grundfunktion kann dabei sein automatisch eine neue E-Mail zu erstellen mit der Ausführung eines Makros oder eines Klicks.
Klar kann man jetzt einwenden: „Das geht doch in Outlook auch so…über den Button ‚Neue E-Mail‘“. Natürlich, aber was ist, wenn ich gleich den Empfänger in der neuen Mail automatisch mit angeben kann? Oder wenn man einen vorformatierten Text angeben kann, wo Schriftart und Schriftgröße richtig eingestellt sind? Oder wenn ich gleich die Priorität der E-Mail mit übergeben kann?
Das erspart dann doch etliche Klicks, vorausgesetzt der Anwendungsfall gibt es her.
E-Mail mit Methode CreateItem() erstellen
Um automatisch eine neue E-Mail mit Outlook zu erstellen, kann man das folgende Makro verwenden. Die zu verwendende Funktion lautet Application.CreateItem(…).
Man sieht auch gleich die Fülle an Parameter, die man konfigurieren kann. Parameter, die nicht benötigt werden, kann man einfach weglassen.
Public Sub NewMail()
Dim olItem As Outlook.MailItem
Set olItem = Application.CreateItem(olMailItem)
With olItem
.To = "erika.mustermann@my-domain.de"
.CC = "herr.xy@gmail.com"
.BCC = "frau.xy@web.de"
.subject = "Unser Newsletter"
.VotingOptions = "Zustimmen;Ablehnen"
.BodyFormat = olFormatHTML
.Importance = olImportanceHigh
.Sensitivity = olConfidential
.ExpiryTime = DateAdd("d", 1, Now)
.DeferredDeliveryTime = #2/18/2024 8:00:00 AM#
.Attachments.Add ("c:\Users\xy\Desktop\ekiwi_logo_en-1.jpg")
.HTMLBody = "<BODY style=font-size:20pt;font-family:Calibri><p>Hallo,</p><p>heute erhalten Sie unseren neuen Newsletter</p><p>Viele Grüße,<br>Max Lautenberger</p></BODY>"
.Display
End With
Set olItem = Nothing
End Sub
Erläuterung Parameter
Die einzustellenden Parameter kennt man eigentlich auch aus der normalen Bedienung von Outlook und sind fast selbsterklärend.
Parameter „To“:
Hier werden die Empfänger-Adresse eingetragen bzw. wenn es sich um mehrere Adressen handelt, können hier auch getrennt durch Semikolon mehrere Empfänger eingetragen werden.
Parameter „CC“:
Hier trägt man die E-Mail-Adressen ein, die eine Kopie der Mail erhalten sollen; auch wieder getrennt mit Semikolon, wenn es sich um mehrere E-Mail-Adressen handelt. Wer im CC steht, kann durch alle Empfänger der E-Mail gesehen werden
Parameter „BCC“:
Der Parameter ist für „Blind Copy“. Hier die E-Mail-Adressen eintragen, wie bei „To“ oder „CC“. Der einzige Unterschied ist, dass die Empfänger nicht sehen können, dass diese E-Mail an die hier benannten Empfänger ebenfalls gesendet wurde.
Parameter „Subject“:
Hier einfach einen Text als Betreff der E-Mail eintragen
Parameter „VotingOptions“:
Dabei handelt es sich um Abstimmungsschaltflächen für eine Antwort-E-Mail, die in der E-Mail angezeigt werden. Hier kann man beliebige Wörter vergeben. Die einzelnen Abstimmungsschaltflächen müssen durch Semikolon voneinander getrennt werden.
Parameter „BodyFormat“:
Hier legt man fest, welches Format die E-Mail haben soll. Es gibt dabei 3 Möglichkeiten, die über die folgenden Enumerationen angegebene werden können. Man kann entweder die Zahl verwenden oder den Wortlaut:
- olFormatUnspecified (Wert 0): kein spezifiziertes Format
- olFormatPlain (Wert 1): formatiert die E-Mail als Text
- olFormatHTML (Wert 2): formatiert die E-Mail in HTML
- olFormatRichText (Wert 3): formatiert die E-Mail im RichText-Format
Parameter „Importance“:
Damit kann man die Wichtigkeit einer E-Mail darstellen. In der E-Mail selbst wird eine hohe Wichtigkeit meistens dann mit einem roten Ausrufezeichen gekennzeichnet. Um die Wichtigkeit zu kennzeichnen, kann man die folgenden Enumerationen oder den Wert selbst verwenden:
- olImportanceLow (Wert 0): geringe Wichtigkeit
- olImportanceNormal (Wert 1): keine bzw. normale oder mittlere Wichtigkeit
- olImportanceHigh (Wert 2): hohe Wichtigkeit
Parameter „Sensitivity“:
Mit diesem Parameter kann man der E-Mail einen Status geben, wie sensible der Inhalt zu behandeln ist bzw. wie vertraulich die E-Mail zu behandeln ist. Dafür kann man vier Werte (Enumerationen) übergeben, welche die folgende Bedeutung haben. Dem Empfänger der E-Mail wird dann zum Beispiel ein Hinweis angezeigt, dass die E-Mail „vertraulich“ zu behandeln ist. Die Werte sind nahezu selbsterklärend:
- olNormal (Wert 0): keine Vertraulichkeitsstufe; Standardwert, in diesem Fall kann man den Parameter auch weglassen
- olPersonal (Wert 1): persönlich
- olPrivate (Wert 2): Privat
- olConfidential (Wert 3): vertaulich
Parameter „ExpiryTime“:
Hier kann ein Ablaufdatum der E-Mail angegeben werden. Ist das Ablaufdatum erreicht, wird die E-Mail beim Empfänger als durchgestrichen gekennzeichnet, bleibt aber im Posteingang erhalten. So wird dem Empfänger symbolisiert, dass der Inhalt der E-Mail nicht mehr relevant ist.
Im Beispiel oben wurde die Funktion DateAdd mit dem Parameter/Funktion Now verwendet. Damit übergibt man ein Ablaufdatum ab dem heutigen Tag gerechnet in Wochen, Tagen, Monaten o.ä.
Parameter „DeferredDeliveryTime“:
Hier kann man ein verzögertes Versenden der E-Mail bzw. eine verzögerte Zustellung der E-Mail einstellen. Man übergibt diesem Parameter ein Datum/Uhrzeit, aber welchem die E-Mail zugestellt werden soll. Bis zum erreichen dieses Datums/Uhrzeit verbleibt die E-Mail im Postausgang von Outlook.
Parameter „Attachments“:
Der Parameter Attachments ist eine Auflistung aller E-Mail-Anlagen, die der neu erstellten E-Mail beigefügt werden sollen. Mit der Add-Funktion fügt man der Auflistung die einzelnen Anlagen hinzu. Dabei übergibt man der Add-Funktion den vollständigen Pfad zu der jeweiligen Datei, die der e-Mail angefügt werden soll.
Parameter „HTMLBody“ oder „Body“:
Hier fügt man den eigentlichen E-Mail-Text ein; in unserem Fall im HTML-Format. Wurde zum Beispiel „PlainText“ als Body-Format festgelegt, kann dieser Parameter nicht verwendet werden. Stattdessen verwendet man dann den Parameter „Body„. Beim RichText-Format muss man den Parameter „RTFBody“ verwenden.
Es gibt noch eine Reihe weiterer Parameter, die sich alle konfigurieren lassen im VBA-Makro, wie z.B. ReplyTo, also die Antwort-E-Mail-Adressen, wohin die Antwort-Mail gesendet werden soll.
Ergebnis: Ansicht der neu erstellten E-Mail in Outlook
Methode „Display“
Der Aufruf von Display führt dazu, dass die neu erstellte E-Mail in Outlook angezeigt wird.
Das folgende Bild zeigt die mit VBA neu erstellte E-Mail sowie die Auswirkungen der einzelnen Parameter anhand des oben gezeigten Code-Beispiel.