Vor einigen Tagen habe ich eine Anfrage erhalten, die sich auf Erinnerungen bei Microsoft Outlook und die Anpassung davon bezieht. Bei ganztätigen Terminen setzt Outlook 18 Stunden als Erinnerung, wenn die Option Standarderinnerung per Optionen, Reiter Einstellungen aktiviert ist (Abb. 1). Dabei ist egal, ob 15 Minuten oder ein anderer Wert bei Standarderinnerung eingestellt ist, ganz genauso wie egal ist, wie der Beginn bei Arbeitstagen definiert wird (Abb. 2) – Outlook stellt bei den ganztätigen Terminen immer pauschal 18 Stunden bei der Erinnerung ein (Abb. 3, 4). Das Resümee: Da wurde nicht mitgedacht!
Abb. 1.: Optionen, Standarderinnerung bei Terminen
Abb. 2: Definition der Arbeitswoche / Beginn & Ende eines Arbeitstages
Abb. 3: Standarderinnerung, die bei einem Termin automatisch eingestellt wird
Abb. 4.: Standarderinnerung, die bei einem ganztägigen Ereignis automatisch eingestellt wird
Wie lässt sich diese Problemstellung lösen? Indem bei dem Anlegen ganztätiger Termine die Einstellung von 18 Stunden manuell geändert wird. Klar, aber ist das gute User Experience? Also VBA to the rescue! Folgender VBA-Anwendungscode muss in ThisOutlookSession kopiert und gespeichert werden.
Damit Makros unter Outlook funktionieren, muss die Sicherheit etwas weniger restriktiv gesetzt sein. Das findet sich unter Extras, Makro, Sicherheit, Makrosicherheit. Dort ist der Wert Warnungen für alle Makros bzw. Keine Sicherheitsprüfung für Makros einzustellen (vgl. Abb. 5).
Abb. 5: Outlook 2007 – Alle Regeln per Makro ausführen, Makrosicherheit festlegen
Wenn nicht, erscheint bei der Ausführung von unsignierten Makros eine Fehlermeldung (Abb. 6).
Abb. 6: Outlook 2007 – Fehlermeldung, wenn Makros deaktiviert sind
Wenn der Wert Warnungen für alle Makros gewählt wird, erscheint dann eine Warnung beim Starten von Outlook (Abb. 7). Demzufolge ist der Wert Keine Sicherheitsüberprüfung für Makros sinnvoll.
Abb. 7: Sicherheitshinweis bei Makros durch Outlook 2007
Das Makro wird dann über Extras, Makro, Makros, Bearbeiten bei ThisOutlookSession eingefügt (Abb. 8).
Nach einem Neustart von Outlook werden beim Anlegen ganztägiger Termine diese mit 16 h Erinnerung versehen. Über den Wert bei ReminderMinutesBeforeStart kann dieser Zeitraum gesteuert werden.
Was lernen wir daraus? Jeder sollte ein bisschen VB(A) können, meint zumindest vielleicht Microsoft... ;)
Abb. 8: Einfügen vom VBA-Anwendungscode in ThisOutlookSession
Public WithEvents olAppointmentItems As Outlook.Items
Private Sub Application_Startup()
Set olAppointmentItems = ThisOutlookSession.Session.GetDefaultFolder(olFolderCalendar).Items
End Sub
Private Sub olAppointmentItems_ItemAdd(ByVal Item As Object)
Dim appointment As AppointmentItem
Set appointment = Item
If appointment.AllDayEvent = True Then
appointment.ReminderMinutesBeforeStart = 960 '60 Minuten * 16
appointment.Save
End If
End Sub
Public WithEvents olAppointmentItems As Outlook.Items
Private Sub Application_Startup()
Set olAppointmentItems = ThisOutlookSessio