Set Birthday/Anniversary Reminders

Following macro changes (it does not set reminder if it is not set already) reminders for birthday/anniversary events to configured number of hours before event (because by default it is 15 minutes before midnight and one does not want to be woken by Android at that time). This macro is useful for situation when birthday event is not synchronized with reminder time (which can happen rarely on specific conditions).

License: GPL

Sub SetSpecEventReminders()

  Dim ns As NameSpace

  Dim f As Folder

  Dim t As AppointmentItem

  Dim rp As RecurrencePattern

  Dim istr As String

  Dim remtime As Integer

  Dim n As Integer

 

  Set ns = Application.GetNamespace("MAPI")

  Set f = ns.GetDefaultFolder(olFolderCalendar)

 

  istr = InputBox("Number of hours before event")

 

  If Not IsNumeric(istr) Then

    MsgBox "Input is incorrect, macro will not continue."

    Exit Sub

  End If

 

  remtime = CInt(istr) * 60

  n = 0

 

  For Each i In f.Items

    If i.Class = olAppointment Then

      Set t = i

     

      If t.IsRecurring And t.ReminderSet And t.AllDayEvent Then

         Set rp = t.GetRecurrencePattern()

        

         If rp.RecurrenceType = olRecursYearly And rp.Interval = 12 And rp.NoEndDate Then

           If (t.ReminderMinutesBeforeStart <> remtime) Then

             t.ReminderMinutesBeforeStart = remtime

             t.Save

             n = n + 1

           End If

         End If

      End If

    End If

  Next

 

  MsgBox "Changed " & n & IIf(n = 1, " event", " events")

End Sub