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


             n = n + 1

           End If

         End If

      End If

    End If



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

End Sub