Dieses Makro wird beim Start von Outlook ausgeführt und sucht nach neuen Geburtstagsereignissen, die dem Standardkalender hinzugefügt werden. Wenn es eines findet, setzt es eine Erinnerung für 7 Tage und fügt dem Ereignis die Kategorie Geburtstag hinzu.
Als erstes müssen Sie einen Ereignishandler erstellen, der beim Start von Outlook ausgeführt wird. Dies geschieht durch die Erstellung einer Subroutine mit dem Namen Application_Startup.
In dieser Subroutine müssen Sie den Kalender von Outlook öffnen und alle Termine durchlaufen. Dazu verwenden Sie eine Schleife über alle Termine in der Items-Kollektion des Kalenders.
In der Schleife prüfen Sie, ob der aktuelle Termin ein Geburtstag ist, indem Sie die Eigenschaften des Termins überprüfen. Wenn der Termin ein Geburtstag ist, fügen Sie eine Erinnerung hinzu, indem Sie die RemindBeforeMinutes-Eigenschaft des Termins auf 7 Tage setzen. Außerdem fügen Sie dem Termin die Kategorie “Geburtstag” hinzu, indem Sie die Categories-Eigenschaft des Termins ändern.
Am Ende der Schleife speichern Sie die Änderungen am Kalender und schließen ihn wieder.
Hier ist ein Beispielcode, der diese Schritte ausführt:
Private Sub Application_Startup()
Dim objCalendar As Outlook.Folder
Dim objAppointment As Outlook.AppointmentItem
Set objCalendar = Application.Session.GetDefaultFolder(olFolderCalendar)
For Each objAppointment In objCalendar.Items
If objAppointment.Categories = "Geburtstag" Then
' Termin ist bereits als Geburtstag gekennzeichnet, überspringe ihn
GoTo SkipAppointment
End If
If objAppointment.IsRecurring Then
' Termin ist eine Serienveranstaltung, überspringe ihn
GoTo SkipAppointment
End If
If objAppointment.Start < Now Then
' Termin hat bereits stattgefunden, überspringe ihn
GoTo SkipAppointment
End If
If objAppointment.AllDayEvent And _
objAppointment.Duration = 1440 And _
InStr(objAppointment.Subject, "Geburtstag") > 0 Then
' Termin ist ein Geburtstag, füge Erinnerung hinzu und füge Kategorie hinzu
objAppointment.ReminderSet = True
objAppointment.ReminderMinutesBeforeStart = 10080 ' 7 Tage
objAppointment.Categories = "Geburtstag"
objAppointment.Save
End If
SkipAppointment:
Next objAppointment
Set objAppointment = Nothing
Set objCalendar = Nothing
End Sub
Bitte beachten Sie, dass dieser Code nur für eine spezielle Art von Geburtstagsterminen funktioniert, die den Betreff “Geburtstag” enthalten und als ganztägiges Ereignis für einen Tag eingestellt sind. Wenn Ihre Geburtstagstermine anders formatiert sind, müssen Sie den Code entsprechend anpassen.
Fall Sie Fragen zu diesem Skript schreiben Sie uns einfach einen Komentar.
Oder Sie schauen in unser Buch: Einführung in Outlook VBA: OUTLOOK PROGRAMMIEREN – SO EINFACH GEHT’S MIT VIELEN CODE BEISPIELEN