Beitrag aus SmartTools Outlook Weekly
Erweiterte Betreffzeilenprüfung von eingehenden E-Mails in Outlook, Teil 2
Outlook 365 2024 2021 2019 2016 2013
Wenn Sie prüfen möchten, ob die Betreffzeile einer eingehenden E-Mail alle Begriffe einer vorgegebenen Wörterliste enthält, kommen Sie mit Outlook-Regeln nicht weiter. Die Rettung ist wie in vielen Fällen eine individuelle Makrolösung. Sie setzt sich hier aus mehreren Komponenten zusammen, die wir Ihnen in diesem Tipp vorstellen. Im ersten Teil unseres Tipps hatten Sie die VBA-Prozedur erstellt, die die eigentliche Arbeit übernimmt: Sie prüft, ob alle Begriffe einer Wörterliste im Betreff enthalten sind. Sollte das nicht der Fall sein, sendet sie eine Antwort mit dem Hinweis auf eine unvollständige Betreffzeile und löscht die E-Mail aus dem Posteingang. Damit diese Aktionen automatisch beim Eingang neuer E-Mails ausgeführt werden, müssen Sie weitere VBA-Prozeduren erstellen, um die es in diesem Tipp geht.
- Starten Sie Outlook und wechseln Sie mit Alt + F11 in die Entwicklungsumgebung.
- Drücken Sie Strg + R, um das Unterfenster des Projekt-Explorers zu aktivieren.
- Öffnen Sie darin zuerst den Hauptzweig des VBA-Projekts - "Projekt1 (VbaProject.OTM)" – und dann den Unterzweig "Microsoft Outlook Objekte".
- Doppelklicken Sie auf den darunter angezeigten Eintrag "ThisOutlookSession", um das zugehörige Codefenster zu öffnen.
- Ganz am Anfang des Codefensters oder, wenn am Anfang die Zeile "Option Explicit" steht, unter der "Option Explicit"-Zeile geben Sie folgende Codezeile ein:
Public WithEvents PostfachMails As Outlook.Items
- Öffnen Sie am oberen Rand des Codefensters das linke Dropdownfeld und wählen Sie "Application" aus. Dann öffnen Sie das rechte Dropdownfeld und wählen "Startup" aus. Auf diese Weise legen Sie das Gerüst einer Prozedur an, die automatisch beim Starten von Outlook ausgeführt wird.
- Ergänzen Sie das Prozedurgerüst folgendermaßen:
Private Sub Application_Startup()
Dim strKontoname As String
Dim olKonto As Account
strKontoname = "<Kontoname>"
For Each olKonto In Application.Session.Accounts
If olKonto.DisplayName = strKontoname Then
Set PostfachMails = olKonto.DeliveryStore _
.GetDefaultFolder(olFolderInbox).Items
Exit For
End If
Next olKonto
Set olKonto = Nothing
End Sub
- Ersetzen Sie in der Anweisung, die mit "strKontoname =" beginnt, den Text <Kontoname> durch den Namen des Kontos, dessen Posteingang überwacht werden soll.
- Den Kontonamen finden Sie heraus, indem Sie in Outlook Datei-Informationen anwählen und im Konto-Auswahlfeld unter Kontoinformationen nach dem betreffenden Konto suchen. Den in diesem Auswahlfeld angezeigten Namen müssen Sie auch im VBA-Code verwenden.
- Wenn im Konto-Auswahlfeld zum Beispiel der Name "m.mustermann@web.de" angezeigt wird, müsste die VBA-Anweisung wie folgt lauten:
strKontoname = "m.mustermann@web.de"
- Öffnen Sie erneut das linke Dropdownfeld am oberen Rand des Codefensters und wählen Sie dieses Mal "PostfachMails" aus. Im rechten Dropdownfeld aktivieren Sie den Eintrag "ItemAdd".
- Das daraufhin eingefügte Prozedurgerüst ergänzen Sie wie folgt:
Private Sub PostfachMails_ItemAdd(ByVal Item As Object)
If Item.Class = olMail Then
RegelMitUndBedingung Item
Exit Sub
End If
End Sub
- Die Prozedur wird bei jeder eingehenden Nachricht automatisch ausgeführt und prüft zunächst, ob es sich um ein E-Mail-Objekt handelt – und nicht etwa um eine Besprechungsanfrage oder ähnliches. Die weitere Bearbeitung der E-Mail übernimmt dann die Funktion "RegelMitUndBedingung", die Sie im ersten Teil dieses Tipps angelegt haben.
- Speichern Sie den VBA-Code, indem Sie Strg + S drücken.
- Verlassen Sie die Entwicklungsumgebung per Datei-Schließen und zurück zu Microsoft Outlook.
- Beenden Sie Outlook und starten Sie das Programm neu.
Ab sofort werden alle E-Mails überwacht, die im Posteingang des im VBA-Code angegebenen Kontos eintreffen. Die Prozedur "RegelMitUndBedingung" prüft dann die Betreffzeile und schickt eine Antwort an den E-Mail-Absender, wenn nicht alle Pflichtbegriffe in der Betreffzeile enthalten sind. So haben Sie mit Hilfe von VBA eine flexible Posteingangsregel erstellt.