In der Welt der E-Mail-Kommunikation ist die Zuverlässigkeit des Nachrichtenempfangs von entscheidender Bedeutung. Insbesondere für Administratoren und andere Personen, die routinemäßige Statusmeldungen erhalten, ist es wichtig, bei Nichtankunft einer erwarteten Nachricht zeitnah informiert zu werden. Dies könnte ein Indikator für ein zugrunde liegendes Problem sein. In diesem Zusammenhang stellt sich oft die Frage, ob und wie man automatische Erinnerungen oder E-Mails einrichten kann, falls eine bestimmte Nachricht nicht innerhalb eines festgelegten Zeitrahmens eintrifft.
Automatisierung durch Skriptregeln in Outlook
Die Lösung dieses Problems in Microsoft Outlook basiert auf der Verwendung von Skriptregeln, die ein hohes Maß an Anpassungsfähigkeit bieten. Outlook selbst verfügt nicht über eine integrierte Timer-Funktion, weshalb die Umsetzung über Umwege erfolgt: das Setzen von Erinnerungen für eingehende Nachrichten, die als Trigger für die Überprüfung dienen. Konkret wird beim Eintreffen einer Nachricht eine Erinnerung für eine Stunde gesetzt und anschließend die Erinnerung sowie die Markierung von älteren Nachrichten entfernt. Alternativ kann man sich dafür entscheiden, die älteren Nachrichten einfach zu löschen.
Um die in dem Artikel beschriebenen Funktionalitäten zu implementieren, benötigen Sie zwei verschiedene VBA-Skripte für Microsoft Outlook. Das erste Skript setzt automatisch eine Erinnerung für neu eingetroffene E-Mails, während das zweite Skript für die Überwachung eines geteilten Postfachs konzipiert ist. Nachfolgend finden Sie die detaillierten Anweisungen und den Code für beide Skripte.
Skript 1: Automatische Erinnerung für neu eingetroffene Nachrichten
Dieses Skript wird verwendet, um für jede neu eingetroffene E-Mail eine Erinnerung zu setzen und ältere Nachrichten mit demselben Betreff zu aktualisieren oder zu löschen.
Public Sub RemindNewMessages(Item As Outlook.MailItem)
Dim objInbox As Outlook.MAPIFolder
Dim intCount As Integer
Dim objVariant As Variant
Set objInbox = Session.GetDefaultFolder(olFolderInbox)
With Item
.MarkAsTask olMarkThisWeek
.TaskDueDate = Now + 1
.ReminderSet = True
.ReminderTime = Now + 0.041 ' Setzt eine Erinnerung für eine Stunde später
.Categories = "Remind in 1 Hour"
.Save
End With
Item.Save
' Sucht nach existierenden Nachrichten und entfernt die Markierung und Erinnerung
For intCount = objInbox.Items.Count To 1 Step -1
Set objVariant = objInbox.Items.Item(intCount)
If objVariant.MessageClass = "IPM.Note" Then
If LCase(objVariant.Subject) = LCase(Item.Subject) And objVariant.SentOn < Item.SentOn Then
With objVariant
.ClearTaskFlag
.Categories = ""
.Save
End With
' Alternativ: Löschen der älteren Nachrichten
' objVariant.Delete
End If
End If
Next
Set objInbox = Nothing
End Sub
Skript 2: Überwachung eines geteilten Postfachs
Dieses Skript verwendet ein ItemAdd
-Ereignis, um den Posteingang eines geteilten Postfachs zu überwachen und Erinnerungen für jede eingetroffene Nachricht zu setzen.
Private WithEvents objNewMailItems As Outlook.Items
Private Sub Application_Startup()
Dim objInbox As Outlook.MAPIFolder
Dim objOwner As Outlook.Recipient
Set objNS = Application.GetNamespace("MAPI")
Set objOwner = objNS.CreateRecipient("chris") ' "chris" durch den tatsächlichen Namen ersetzen
objOwner.Resolve
If objOwner.Resolved Then
Set objInbox = objNS.GetSharedDefaultFolder(objOwner, olFolderInbox)
End If
Set objNewMailItems = objInbox.Items
End Sub
Sub objNewMailItems_ItemAdd(ByVal Item As Object)
Dim intCount As Integer
Dim objVariant As Variant
With Item
.MarkAsTask olMarkThisWeek
.ReminderSet = True
.ReminderTime = Now + 0.041 ' Setzt eine Erinnerung für eine Stunde später
.Categories = "Remind in 1 Hour"
.Save
End With
Item.Save
' Sucht nach existierenden Nachrichten und entfernt die Markierung und Erinnerung
For intCount = objInbox.Items.Count To 1 Step -1
Set objVariant = objInbox.Items.Item(intCount)
If objVariant.MessageClass = "IPM.Note" Then
If LCase(objVariant.Subject) = LCase(Item.Subject) And objVariant.SentOn < Item.SentOn Then
With objVariant
.ClearTaskFlag
.Categories = ""
.Save
End With
' Alternativ: Löschen der älteren Nachrichten
' objVariant.Delete
End If
End If
Next
End Sub
Anwendung der Skripte
- Öffnen Sie den VBA-Editor in Outlook durch Drücken von
Alt + F11
. - Erstellen Sie ein neues Modul: Rechtsklicken Sie im Projekt-Explorer auf “VBAProject (Outlook)”, wählen Sie “Einfügen” > “Modul”.
- Kopieren Sie den entsprechenden Code (je nachdem, welches Skript Sie verwenden möchten) in das neue Modul.
- Passen Sie die Makrosicherheit an, um die Ausführung der Skripte zu ermöglichen.
Denken Sie daran, die Makrosicherheit nach dem Testen anzupassen, um Ihr System nicht unnötigen Risiken auszusetzen.
Implementierung einer Erinnerungsfunktion
Die Implementierung einer solchen Funktion erfordert die Nutzung des Visual Basic for Applications (VBA) Editors in Outlook, um ein spezifisches Skript hinzuzufügen. Dieses Skript – eine Subroutine namens RemindNewMessages
– setzt eine Erinnerung für neu eingetroffene Nachrichten und passt bei älteren Nachrichten die Markierungen an. Um dieses Skript zu nutzen, muss es in ein neues Modul im VBA-Editor von Outlook eingefügt und eine Skriptregel erstellt werden.
Überwachung geteilter Postfächer
Für geteilte Postfächer bietet sich eine Variante des Skripts an, die ein ItemAdd
Makro verwendet, um den Posteingang eines geteilten Postfachs zu überwachen. Dies erfordert, dass das geteilte Postfach im Profil des Benutzers vorhanden ist. Das Makro prüft jede eingehende Nachricht und setzt entsprechende Erinnerungen, wobei ältere Nachrichten nach demselben Prinzip wie oben beschrieben behandelt werden.
Fazit
Die Automatisierung von Erinnerungen für nicht eingetroffene E-Mails in Outlook mittels Skriptregeln und VBA bietet eine flexible Lösung für ein spezifisches Kommunikationsbedürfnis. Durch die detaillierte Anpassung der Skripte können Benutzer sicherstellen, dass sie immer über den Status wichtiger Nachrichten informiert sind. Dieser Ansatz zeigt die Leistungsfähigkeit von Outlook’s Anpassungsmöglichkeiten und bietet Nutzern, insbesondere in administrativen und technischen Berufen, ein wertvolles Werkzeug zur Optimierung ihrer Arbeitsabläufe.