• Outlook User
  • New Outlook app
  • Outlook.com
  • Outlook Mac
  • Outlook & iCloud
  • Developer
  • Microsoft 365 Admin
    • Common Problems
    • Microsoft 365
    • Outlook BCM
    • Utilities & Addins

Adding Birthdays and Anniversaries to Outlook's Calendar

Slipstick Systems

› Outlook › People › Adding Birthdays and Anniversaries to Outlook’s Calendar

Last reviewed on November 19, 2019     73 Comments

When you create a Contact and add the contact's birthday and/or anniversary a recurring event is added to your calendar. This feature cannot be disabled.

To remove the calendar named Birthday from Outlook.com or Office 365 mailboxes, see Remove the Holiday or Birthday calendar from Outlook.com or Office365

If you don't want the events added to your calendar, don't enter dates in the birthday and anniversary fields. Put the dates in the Notes field or a user defined field. Or delete the event from your calendar. Note that if you do this, Outlook may recreate it at some point.

Birthday field on Contact

However, if you import a contact list or sync with a handheld device, these events are not created in the calendar. In order to have them added you need to either edit the contact's name (clicking the Full Name button and saving the contacts is sufficient) or edit the Birthday and Anniversary fields to trigger an update. See the Tools below for utilities that can trigger the update.

See Removing Birthdays and Anniversaries for an easy way to remove the dates from Contacts and the events from the Calendar. There is also a VBA sample there to remove the events from the calendar as soon as the Contact creates it.

 

Reminders for Birthdays

When you create a new contact and specify a birth date, Microsoft Outlook automatically creates a recurring annual event in the Calendar folder for contact's birthday, but it doesn't set a reminder unless you have Outlook set to add a reminder to all new appointments (and in that case, it uses the default reminder time, usually 15 minutes).

If you want a longer reminder period, you will need to change the reminders on each birthday or anniversary or use VBA to set the reminders.

Dim WithEvents mcolCalItems As Items

Private Sub Application_Startup()
    Dim objNS As NameSpace
    Set objNS = Application.GetNamespace("MAPI")
    Set mcolCalItems = objNS.GetDefaultFolder(olFolderCalendar).Items
    Set objNS = Nothing 
End Sub 

Private Sub mcolCalItems_ItemAdd(ByVal Item As Object)
    ' #### USER OPTIONS ####
    ' remind XX days before birthdays 
    intDays = 7

    If Item.Class = olAppointment And _
       InStr(Item.Subject, "Birthday") > 0 Or InStr(Item.Subject, "Anniversary") > 0 Then
        With Item
            .ReminderSet = True
            .ReminderMinutesBeforeStart = 24 * 60 * intDays
            .Save
        End With
    End If
End Sub

For help using the VBA Editor, see How to use Outlook's VBA Editor

 

Add Birthdays and Anniversaries to calendar

When you import Contacts (or sync with a smartphone) the birthdays are not added to the calendar. You have two choices: a macro or an add-in. The add-ins offer more features (and can offer a high return on investment) if you sync a lot, but for one time use, a macro is quick and effective.

This macro uses the Contact folder you are looking in. If you prefer to use the folder picker, change the Set MyFolder line to Set myFolder = Session.PickFolder

Sub AddBirthdaysAnniversaries()

 Dim myFolder As MAPIFolder

 ' To use the Contacts folder you are in
 Set myFolder = Application.ActiveExplorer.CurrentFolder

    For i = myFolder.Items.Count To 1 Step -1
    
    If myFolder.Items(i).Class = 40 Then
    
    ' If you want to see that it's working, uncomment this line
       ' myFolder.Items(i).Display
        
    ' Copy the correct birthday and anniversary to a variable
         mybirthday = myFolder.Items(i).Birthday
         myanniversary = myFolder.Items(i).Anniversary
         
    ' Set today as the birthday & anniversary
        myFolder.Items(i).Birthday = Now
        myFolder.Items(i).Anniversary = Now
        
    ' Replace 'today' with the correct birthday & anniversary
         myFolder.Items(i).Birthday = mybirthday
         myFolder.Items(i).Anniversary = myanniversary
         
    ' Save and close
         myFolder.Items(i).Save
         myFolder.Items(i).Close 0
    End If
    
'Repeat with next contact
    Next i

 End Sub

Convert Imported Birthdates

This macro will convert imported birthdays to recurring events.

Sub ConvertBDayRecur()

    Dim objOL As Outlook.Application
    Dim objItems As Outlook.Items
    Dim objFolder As Outlook.MAPIFolder
    Dim appItem As Object 'Outlook.AppointmentItem
    Dim pattern As Outlook.RecurrencePattern
 
    Set objOL = Outlook.Application
    Set objFolder = objOL.ActiveExplorer.CurrentFolder
    Set objItems = objFolder.Items
    
    On Error Resume Next
 
    For Each appItem In objItems
    If InStr(1, appItem.Subject, "'s Birthday") > 0 And appItem.Categories = "Birthday" Then
     
     With appItem
 
    'make recurring
     Set pattern = appItem.GetRecurrencePattern
     pattern.RecurrenceType = olRecursYearly
     pattern.PatternStartDate = appItem.Start
     pattern.NoEndDate = True
    appItem.Save
     End With
    End If
    Next
 
    Set obj = Nothing
    Set objItems = Nothing
    Set objFolder = Nothing
    Set objOL = Nothing

End Sub
 

Tools

CustomDays

Use CustomDays to display a person's age on their birthday or year on anniversaries. The display can be changed individually using placeholders. You can also use this tool to delete birthday entries that are not associated with a contact. Automatically send a birthday email, or completely prevent the entry of birthdays in the calendar. Also available separately as CustomBirthday and CustomAnniversary. (site is in German but utilities will work in English Outlook)

Adding Birthdays and Anniversaries to Outlook's Calendar was last modified: November 19th, 2019 by Diane Poremsky
Post Views: 63

Related Posts:

  • Removing Birthdays and Anniversaries from the Calendar
  • Create Birthday Events for Public Folder Contacts
  • Moving recurring items in older versions of Outlook creates a single e
    Moving Birthdays drops the recurrence
  • Add a reminder to Birthday Events

About Diane Poremsky

A Microsoft Outlook Most Valuable Professional (MVP) since 1999, Diane is the author of several books, including Outlook 2013 Absolute Beginners Book. She also created video training CDs and online training classes for Microsoft Outlook. You can find her helping people online in Outlook Forums as well as in the Microsoft Answers and TechNet forums.

Comments

  1. Henk says

    June 10, 2018 at 9:36 am

    Thanks for the macro. Worked perfectly.

    Reply
  2. chelsea says

    December 13, 2016 at 1:55 pm

    When adding in birthdays, do you need the year they were born in for there to be a reminder each year or can you just put there month/date in with the current year?

    Reply
  3. Heather says

    December 6, 2016 at 10:02 am

    Hi everyone! Diana, I just stumbled across your site and it's INCREDIBLE! There is not another site I've found as robust, interactive and actually USEFUL to the degree yours is. THANK YOU!

    I have a question, which I suspect might require a macro. I'm not overly skilled, so forgive me if this is a simple fix...

    I would like the Outlook "birthday" calendar (which is working for contacts who have birthdays in their contact data), to show name AND also Company & Title. So instead of John Smith's Birthday, I'd like to see "John Smith - Manager - XYZ Company's Birthday).

    Can anyone help? Thanks!

    Reply
    • Diane Poremsky says

      December 7, 2016 at 9:45 am

      The problem is that the calendar is read-only - you can't edit it, so a macro won't work. The only (and bad) solution is to put that information in the contact's name field. Sorry.

      Reply
      • heh says

        December 15, 2016 at 2:00 pm

        Thank you!

  4. dave says

    April 26, 2016 at 10:48 am

    I would like for outlook calendar to display a number via count like "Dave is 62 today" or "Dave and Mary' 37th Anniversary"

    Reply
    • Diane Poremsky says

      June 19, 2016 at 12:34 am

      This is one way: https://www.slipstick.com/developer/code-samplesa/add-persons-age-birthday-event/

      Reply
  5. Fancy says

    March 4, 2016 at 4:06 pm

    I want to add the birthdays of my team and have a reminder or some sort of notification sent out to everyone to notify them that it's someone's birthday...how do I do this?

    Reply
    • Diane Poremsky says

      March 9, 2016 at 12:42 am

      See https://www.slipstick.com/developer/send-email-outlook-reminders-fires/ for one method.

      Reply
  6. Hafez says

    January 3, 2016 at 12:31 am

    is there someone I can hire to make the add-in for me?

    Reply
    • Diane Poremsky says

      January 3, 2016 at 2:58 pm

      We don't do addins and I'm not sure if anyone on this list is taking small projects - [post2post id="11049"]

      Reply
  7. Hafez says

    November 15, 2015 at 11:42 pm

    few questions about the above solution:
    - will it only change the default reminder of Birthday appointments? Other recurring appointments will remain as is?
    - is it possible to create this as an "add-in" or plug-in that can be a packaged code that can be set to multiple users?
    - trying to deploy Outlook to a many users and have the Birthday and Anniversary reminders automatically set for 1 week reminder

    Is the above possible?

    Reply
    • Diane Poremsky says

      November 16, 2015 at 12:15 pm

      Yes, as written, it applies only to birthday and anniversaries. It could be compiled into an addin and deployed.

      Reply
      • Hafez says

        December 3, 2015 at 12:46 am

        does this solution work with Outlook 2016? O365? Could I ask you to send me an e-mail? I would like to find out if I can find a developer to create this plugin for me.

      • Hafez says

        December 12, 2015 at 11:24 pm

        is it possible to hire someone to create this addin for me?

      • Diane Poremsky says

        January 6, 2016 at 1:59 am

        We're no longer compiling addins - not sure if any of the developers on [post2post id="11049"] would be able to do it for you.

  8. chris gambino says

    September 14, 2015 at 8:04 am

    I have a personal address book associated with the corporate calendar. So everyone see my kids birthdays. I would like to associated that my personal address book with a personal calendar. is that possible? if so how?

    Reply
    • Diane Poremsky says

      September 14, 2015 at 9:54 am

      You can create a personal calendar in your mailbox but will need to move the personal appointments to it (or open the personal calendar then create the appointment in it). Or you can set personal appointments to Private - then only people with permission to view private appointments can see them.

      Reply
  9. Kelly D says

    July 4, 2015 at 1:38 pm

    Finally standardized names in outlook contacts but the birthday / anniversary events still get listed in the wrong format (e.g., last, first vs. first last). How do I fix that permanently?

    Reply
    • Diane Poremsky says

      August 29, 2015 at 12:04 am

      They should use the format in the contact's full name field.

      Reply
  10. RAY BATES says

    March 15, 2015 at 8:06 pm

    I WANT A MONTHY CALENDAR WHEREI CAN FILL IN BIRTHDAYS AND ANNIVERSERIES AND OTHERE EVENTS

    Reply
    • Diane Poremsky says

      March 15, 2015 at 10:58 pm

      You can do that in Outlook now. If you want a separate calendar, create a new calendar folder. If the view is not set to monthly, change it on the view tab.

      Reply
  11. sharon p says

    January 24, 2015 at 5:18 pm

    When I enter a contact in People & enter a birthday it no longer shows up on Calendar. Any idea why?

    Reply
    • Diane Poremsky says

      January 24, 2015 at 6:44 pm

      What type of email account? The birthday isn't created in outlook if you use outlook.com - outlook.com should generate it after it syncs and put it on the birthday calendar.

      Reply
  12. Kristi says

    October 24, 2014 at 1:03 pm

    I would like to enter the birthdates for my co-workers so however I do not have (or want) the year and when I put it in it defaults to 2014. I guess that is Ok but is there a way to not have to put in the year?

    Reply
    • Diane Poremsky says

      October 24, 2014 at 4:02 pm

      No, sorry, that field needs a year.

      Reply
  13. JBBinNAS says

    October 22, 2014 at 12:17 pm

    I got a note about 'my administrator only allows so many windows to be open'. How do I know that it is completed. I see a bunch loaded, but there was still a contact card open when I clear the error.

    The script worked great by the way, thanks.

    Reply
  14. scott wheeler says

    September 9, 2014 at 1:54 pm

    Being that we enter actual date for birthdays and anniversaries, it would seem logical to have it automatically count years. Seems like it should be an Outlook feature.

    Reply
    • Diane Poremsky says

      September 9, 2014 at 3:33 pm

      Logic and Outlook? LOL. More Seriously, I'm working on a macro right now that will add the age in the form of "Name's Birthday (nn in 2014)" (where 2014 is the year you ran the macro) You'd only need to run it once a year or after updating contacts.

      Calculating the age as of the last time the macro ran is doable but could be confusing. Up-to-date ages is probably best left to a field on the contact form. It would also be possible to edit each occurrence to create exceptions, but Outlook makes you open the occurrence to see it.

      Reply
    • Diane Poremsky says

      September 9, 2014 at 8:22 pm

      As an FYI, here is a macro that will do it - https://www.slipstick.com/developer/code-samples/add-persons-age-birthday-event/ - run it once a year to update ages for the year.

      Reply
  15. scott wheeler says

    September 9, 2014 at 12:42 pm

    Is there a way to have the number of birthday or anniversary show up (i.e. 20th Anniversary)?

    Reply
    • Diane Poremsky says

      September 9, 2014 at 1:51 pm

      If you want to show the correct age for each year on each individual event, you need to create the events in Excel and import as single events.

      I have instructions to create a custom form that counts the birthday age, but it doesn't automatically update - you need to open the event for it to update. (it shows the current age regardless of which occurrence you're looking at).

      The other option is a macro that recalculates the age - i don't have one, but its an interesting idea. I'll see if i can put something together. It could be automatically triggered weekly or monthly using a reminder or even kicked off when outlook starts up.

      Reply
  16. Bunny says

    July 9, 2014 at 12:46 pm

    I assume this code doesn't work anymore? I was looking for a macro today to create anniversaries and birthdays in my calendar, after I manually imported all my contacts from a csv file into Outlook 2013. I'm only using one data file so there is only one main calendar but, the macro does nothing. In fact, it doesn't even run when I try to run it. I have it pasted into ThisOutlookSession, but it's a dead stick.

    Reply
    • Bunny says

      July 9, 2014 at 12:49 pm

      Nevermind! It's working now, for no reason at all. When all else fails, close and reopen Outlook then run the macro again. It's done the job I needed, so thanks very much.

      Reply
      • Diane Poremsky says

        July 9, 2014 at 2:19 pm

        You know how Outlook works. :)

  17. Luis Alvarado says

    March 2, 2014 at 2:41 am

    Used this code before your code and now my calendar is perfect. Thanks.
    Public Sub PutBirthdaysInCalendar()
    Dim OutApp As Object, oApptFolder As MAPIFolder
    Dim oContact As ContactItem, temp
    Set oApptFolder = Session.GetDefaultFolder(olFolderContacts)

    On Error GoTo koniec
    For Each oContact In oApptFolder.Items
    With oContact
    If .Birthday FormatDateTime("4501-01-01", vbShortDate) Then
    temp = .Birthday
    .Birthday = FormatDateTime("4501-01-01", vbShortDate)
    .Save
    .Birthday = temp
    .Save
    End If
    End With
    Next
    koniec:
    End Sub

    Reply
  18. Sergii Vakula says

    February 14, 2014 at 11:39 am

    Folks, I made script for:
    - auto generation the Birthdays and Anniversaries appointments of all Contact folders to a specific calendar
    - auto changing Contact's FileAs fields: FullName for humans, CompanyName for companies

    You always can download it on https://dl.dropboxusercontent.com/u/15852900/olRobot.vbs

    --- BEGIN ---
    Sub olRobot()
    ' Outlook VBA script by Sergii Vakula
    ' Auto generation the Birthdays and Anniversaries appointments of all Contact folders to a specific calendar
    ' Auto changing Contact's FileAs fields: FullName for humans, CompanyName for companies

    Dim objOL As Outlook.Application
    Dim objNS As Outlook.NameSpace
    Dim objItems As Outlook.Items
    Dim obj As Object
    Set objOL = CreateObject("Outlook.Application")
    Set objNS = objOL.GetNamespace("MAPI")

    On Error Resume Next

    ' *****************************************************************************************************
    ' *** STAGE 1: Rebuilding Contact's Birthdays and Anniversaries to the main calendar, fixing FileAs ***
    ' *****************************************************************************************************

    Dim Report As String
    Dim mySession As Outlook.NameSpace
    Dim myFolder As Outlook.Folder
    Set mySession = Application.Session

    ' Method 1: Ask for Contact folder
    'MsgBox ("Select Contact folder by next step...")
    'Call ContactsFolders(Session.PickFolder, Report)

    ' Method 2: Use default Contact folder and all subfolders
    'Call ContactsFolders(objNS.GetDefaultFolder(olFolderContacts), Report)

    ' Method 3: Use all Contact folders
    For Each myFolder In mySession.Folders
    Call ContactsFolders(myFolder, Report)
    Next

    ' ***************************************************************************************
    ' *** STAGE 2: Moving Birthdays and Anniversaries appointments to a specific calendar ***
    ' ***************************************************************************************

    Dim objCalendar As Outlook.AppointmentItem
    Dim objCalendarFolder As Outlook.MAPIFolder
    Dim cAppt As AppointmentItem
    Dim moveCal As AppointmentItem
    Dim pattern As RecurrencePattern
    Set objCalendarFolder = objNS.GetDefaultFolder(olFolderCalendar)
    bodyMessage = "This is autocreated appointment"

    ' Method 1: Ask for specific calendar folder for birthdays and anniversaries
    'MsgBox ("Select Birthdays and Anniversaries Calendar folder by next step...")
    'Set newCalFolder = Session.PickFolder

    ' Method 2: Use pre-assigned calendar folder for birthdays and anniversaries
    'Set newCalFolder = GetFolderPath("display name in folder listCalendarBirthdays and Anniversaries")
    Set newCalFolder = GetFolderPath("\sv@pbxsphere.comCalendarBirthdays and Anniversaries")

    For i = newCalFolder.Items.Count To 1 Step -1
    Set obj = newCalFolder.Items(i)
    If obj.Class = olAppointment And _
    obj.GetRecurrencePattern.RecurrenceType = olRecursYearly And _
    obj.AllDayEvent And _
    obj.Body = bodyMessage Then
    Set objCalendar = obj
    objCalendar.Delete
    End If
    Err.Clear
    Next

    For i = objCalendarFolder.Items.Count To 1 Step -1
    Set obj = objCalendarFolder.Items(i)
    If obj.Class = olAppointment And _
    obj.GetRecurrencePattern.RecurrenceType = olRecursYearly And _
    obj.AllDayEvent And _
    (Right(obj.Subject, 11) = "'s Birthday" Or Right(obj.Subject, 14) = "'s Anniversary" Or _
    Right(obj.Subject, 13) = "День рождения" Or Right(obj.Subject, 9) = "Годовщина") Then

    Set objCalendar = obj
    Set cAppt = Application.CreateItem(olAppointmentItem)

    With cAppt
    .Subject = objCalendar.Subject
    .Start = objCalendar.Start
    .Duration = objCalendar.Duration
    .AllDayEvent = True
    .Body = bodyMessage
    .ReminderSet = False
    .BusyStatus = olFree
    End With

    Set pattern = cAppt.GetRecurrencePattern
    pattern.RecurrenceType = olRecursYearly
    cAppt.Save

    objCalendar.Delete

    Set moveCal = cAppt.Move(newCalFolder)
    'moveCal.Categories = "moved"
    moveCal.Save

    End If
    Err.Clear
    Next

    Set objOL = Nothing
    Set objNS = Nothing
    Set obj = Nothing
    Set objContact = Nothing
    Set objItems = Nothing
    Set objCalendar = Nothing
    Set objCalendarFolder = Nothing
    Set cAppt = Nothing
    Set moveCal = Nothing
    Set pattern = Nothing
    Set mySession = Nothing
    Set myFolder = Nothing

    MsgBox ("Completed!" & vbCrLf & vbCrLf & "All Contact's FileAs were fixed." & vbCrLf & "All Birthdays and Anniversaries appointments were re-created." & vbCrLf & vbCrLf & "Contact folders that been processed:" & vbCrLf & Report & vbCrLf & "Calendar for Birhdays and Anniversaries:" & vbCrLf & newCalFolder.FolderPath & vbCrLf & vbCrLf & "Have a nice day!")

    End Sub

    Function GetFolderPath(ByVal FolderPath As String) As Outlook.Folder
    Dim oFolder As Outlook.Folder
    Dim FoldersArray As Variant
    Dim i As Integer
    On Error GoTo GetFolderPath_Error
    If Left(FolderPath, 2) = "\" Then
    FolderPath = Right(FolderPath, Len(FolderPath) - 2)
    End If
    FoldersArray = Split(FolderPath, "")
    Set oFolder = Application.Session.Folders.Item(FoldersArray(0))
    If Not oFolder Is Nothing Then
    For i = 1 To UBound(FoldersArray, 1)
    Dim SubFolders As Outlook.Folders
    Set SubFolders = oFolder.Folders
    Set oFolder = SubFolders.Item(FoldersArray(i))
    If oFolder Is Nothing Then
    Set GetFolderPath = Nothing
    End If
    Next
    End If
    Set GetFolderPath = oFolder
    Exit Function
    GetFolderPath_Error:
    Set GetFolderPath = Nothing
    Exit Function
    End Function

    Private Sub ContactsFolders(CurrentFolder As Outlook.Folder, Report As String)
    Dim objItems As Outlook.Items
    Dim obj As Object
    Dim objContact As Outlook.ContactItem
    Dim strFileAs As String
    Dim SubFolder As Outlook.Folder
    Dim SubFolders As Outlook.Folders
    Set SubFolders = CurrentFolder.Folders
    If CurrentFolder.DefaultItemType = 2 Then
    Report = Report & CurrentFolder.FolderPath & vbCrLf
    Set objItems = CurrentFolder.Items
    For Each obj In objItems
    If obj.Class = olContact Then
    Set objContact = obj

    With objContact
    .Display

    If .FullName = "" Then
    strFileAs = .CompanyName
    Else
    strFileAs = .FullName
    End If

    .FileAs = strFileAs

    mybirthday = .Birthday
    myanniversary = .Anniversary
    .Birthday = Now
    .Anniversary = Now
    .Birthday = mybirthday
    .Anniversary = myanniversary

    .Save
    .Close 0
    End With

    End If
    Err.Clear
    Next

    End If

    For Each SubFolder In SubFolders
    Call ContactsFolders(SubFolder, Report)
    Next

    Set SubFolder = Nothing
    Set SubFolders = Nothing

    End Sub

    --- END ---

    Reply
  19. Phillip Hurst says

    January 17, 2014 at 11:08 am

    Works like a charm. Thanks!

    Reply
  20. Phillip Hurst says

    January 14, 2014 at 3:52 pm

    How do I set up recurring birthdays that have the contacts actual birth year to show up in a list view in order? For example, a contact's birthday is 11/18/1935. It shows up on the correct 2014 date in month/week/day view, but it only lists 11/18/1935 in the list view, so it appears at the top of the list if sorted, or not at all if I filter the list for just 2014 birthdays.

    Reply
    • Diane Poremsky says

      January 14, 2014 at 10:02 pm

      So you want them sorted by "this year"? That is difficult because outlook sorts the dates by the serial value. We can get the month (and day) out using a macro and insert them into a custom field, then sort by it. (I'll put up a page with the instructions.)

      If you want to filter birthdays, don't filter for 2014 birthdays, filter for recurrence equals yearly. I have a birthday view here - https://www.slipstick.com/outlook/rules/create-custom-view-list-upcoming-birthdays/ - which may give you some ideas.

      Reply
      • Diane Poremsky says

        January 15, 2014 at 12:24 am

        A macro to add the month and date to a number field, which can be sorted on: https://www.slipstick.com/outlook/calendar/sort-outlook-calendar-birthday/

  21. Dave Faulkner says

    December 13, 2013 at 4:52 pm

    Hi Diane,
    Thank you so much for this article, it has helped me alot.
    I would also like to add a custom date field to Outlook as a recurring annual event (example - spouse birthday).
    Is there a way to insert VBA code to add this event to the calendar when closing the Contact Form? (this would eliminate the need to mannually add to Calendar)
    Any help would be greatly appreceated.
    Dave F

    Reply
    • Diane Poremsky says

      December 13, 2013 at 11:47 pm

      No, not automatically using native features. You could use VBA. I'd use an itemadd macro and watch the calendar folder then do something like
      if item.userproperties("spouse birthday") <> "" then
      ' code to create an event
      end if

      Reply
  22. Michael Moser says

    December 1, 2013 at 4:06 pm

    Hi Diane, I was trying to run your first script above to change the reminder times of birthday and anniversary entries. I copied it as-is into the VBA editor (I only adapted the number of days) and then saved it. However, when I then let this script run (i.e. when I restart Outlook) I always get:

    "Compile Error: Invalid attribute in Sub or Function" in the very first line of the script:
    "Dim WithEvents mcolCalItems As Items"

    What is wrong with that line? What am I missing? Any idea or suggestion?
    This is using Outlook 2013 (32-Bit edition) on Windows 8 (64 Bit).

    Cheers,
    Michael

    Reply
    • Diane Poremsky says

      December 1, 2013 at 10:08 pm

      That lines needs to be at the top of ThisOutlookSession.

      Reply
  23. Erica Woods says

    July 17, 2013 at 7:53 am

    I am creating a church contact list. The individual contact will be the parent and I see where to add a spouse in the contact details. But how do I add the spouses birthday and list their 3 kids and their birthday inside the same contact and get alerts for all of them or have it print in contact details? Thanks!

    Reply
    • Diane Poremsky says

      July 17, 2013 at 7:49 pm

      You have discovered the major limitation of Outlook contacts. They don't handle situations like this. you'll need to create the birthday appointments yourself, and can either make a custom form to record the other family members birthdays or make a record of them in the notes field. Spouses could have their own contact, but that is probably not the best idea for minor children.

      Reply
  24. Noel O'Kelly says

    June 14, 2013 at 12:08 am

    Hi Diane. Thanks for response. Problem solved. Found that I had to Close & Save contact each time I altered data in order to trigger the calendar! So I have to delete existing date, close and save. Re-open and add new date, then close and save. Btw its 2007 with one data and one calendar.

    Reply
    • Diane Poremsky says

      June 14, 2013 at 5:19 am

      Oh, yeah, you need to save and close the contact. It's probably too late now, but another option is to use in-cell editing in a custom view. Add the birthday field - the b-day event should be created as soon as you move to a new contact.

      Reply
  25. Noel O'Kelly says

    June 13, 2013 at 3:24 pm

    Hi Diane. I am adding a birthday to a contact details, but it does not appear in calendar. I have tried editing it, removing and re-entering the date. But to no avail.

    Reply
    • Diane Poremsky says

      June 13, 2013 at 5:28 pm

      What version of Outlook? How many data files and calendars do you have in your profile? Are anniversaries also affected?

      Reply
  26. Chris Reid says

    April 8, 2013 at 12:21 am

    Is it possible to nominate a specific calendar that the birthday and anniversaries are posted to. When we share calendars everyone's b'day on out data base gets posted for everyone to see. If I can get the birthday posted to a specific b day calendar than I can simply not share that calendar.

    Reply
    • Diane Poremsky says

      April 8, 2013 at 6:57 am

      No, not automatically. You could move the birthdays (either manually or using VBA) but anytime you edit a contact, outlook may recreate it.

      Reply
  27. Tomislav Galeta says

    March 28, 2013 at 5:32 am

    And I did order the application and it failed to install. Support team replied to me that they will issue me a refund as they don't support 64-bit for another month or so.
    It looks like I will have to do it manually...

    Reply
    • Diane Poremsky says

      March 28, 2013 at 6:54 am

      Well, the macro should work... or if you moved all of the folders, your previous calendar entries should be on the old calendar, unless Outlook was able to delete them as you moved the contacts. That would depend on how you did the move.

      Reply
  28. Tomislav Galeta says

    March 26, 2013 at 11:43 pm

    Well, I tried also with formatted date, added lines:
    Dim datum As Date
    ...
    datum = Now
    datum = FormatDateTime(datum, vbShortDate)
    myFolder.Items(i).Birthday = datum
    myFolder.Items(i).Anniversary = datum
    ...
    Unfortunately, still no change noticed in this lines by debugger neither for myFolder.Items(i).Birthday nor for Anniversary.

    Reply
  29. Tomislav Galeta says

    March 26, 2013 at 11:31 pm

    Spelling looks fine: if I manually changed dated in contact then Outlook automatically creates recurrent event titled Firstname Lastname's Birthday in English.
    However, your reply motivated me to try to rename all Exchange web interface and default folders to English. It is possible in web options. After Outlook synchronized names, I started VBA again, again no luck :-(
    Looks to me like VBA does not really change dates. So I added toggle breakpoints and watched variables with condition when changed. I noticed that this two lines do not change values of assigned variables:
    myFolder.Items(i).Birthday = Now
    myFolder.Items(i).Anniversary = Now.
    May be date code should be formatted with FormatDateTime() to change values?

    Reply
  30. Tomislav Galeta says

    March 26, 2013 at 12:30 am

    Yes, I did it first and just checked it again. It works, birthdays are created and moved.
    I am thinking if a problem for VBA AddBirthdaysAnniversaries is that my calendar is named in Croatian as Kalendar, not in English as Calendar.
    Also tried to remove all shared calendars and run VBA, no luck.

    Reply
    • Diane Poremsky says

      March 26, 2013 at 5:35 am

      Localized names shouldn't be an issue in the AddBirthdaysAnniversaries code - it uses all VBA variables, not hard coded names. The macro that adds reminders would fail on "Birthday" if the calendar uses localized spelling.

      Reply
  31. Tomislav Galeta says

    March 25, 2013 at 12:45 am

    I did open the old pst file and look inside. There is no single birthday or anniversary event remained inside after migration!? All other events are still there. Weird behaviour.
    I am considering to order add-in Rebuild Birthdays and Anniversaries... I will and let us know about result. Thank you, Diane!

    Reply
    • Diane Poremsky says

      March 25, 2013 at 4:50 am

      If you haven't gotten that app yet, verify the birthdays are created in the calendar when you edit them in the contacts. Open contact, change the birthdate so its a day later and save. Check the calendar. Change it back to the correct day. Did the event move?

      Reply
  32. Tomislav Galeta says

    March 22, 2013 at 1:46 am

    Thank you for your interest, Diane!
    I moved to Exchange (funny named Office 365 as you well mentioned :-))
    And I did not moved anything manually. Outlook 2010 took automaticly all my existing contacts and calendar events from default PST to Exchange. Except birthdays and anniversaries :-(

    Reply
    • Diane Poremsky says

      March 22, 2013 at 3:19 pm

      Open the calendar in the pst, switch to a list view and select all, then move to the Exchange calendar.

      Reply
  33. Tomislav Galeta says

    March 20, 2013 at 6:32 am

    Hi!
    After I have migrated to Office 365, I lost all Birthdays and Anniversaries in calendar in my Outlook 2010 64 bit. I tried suggested macro, unfortunately without success. Any suggestion?

    Reply
    • Diane Poremsky says

      March 20, 2013 at 6:56 am

      Did you migrate to Office 2013 or hosted Exchange email version of Office 365?

      Assuming you upgraded to Office 2013: did you open the same data file in Outlook 2013 as you used before?

      Assuming you moved to Exchange: Did you move the events on the calendar when you migrated? If you move (not copy) the calendar and contacts, all birthday and anniversary events be on the calendar and remain linked (so if you change a birthdate, it changes on the calendar).

      (Don't you love the person who decided one name would be good for two different products?)

      Reply
  34. Mike Hutchko says

    March 13, 2013 at 9:17 pm

    Neither "outlook /cleanreminders" or "outlook /resetfolders" helped. I'm running WIndows XP and had to manually reinstall Outlook 2010 with ALL my contacts & calendar items. However, NONE of my anniversaries and birthdays are moving over from my contact list. I did add a fictitious name of John Doe & put in today's date as his birthday and that took. But all the others (75 in total) are not moving to my calendar. What's up with that?

    Reply
    • Diane Poremsky says

      March 14, 2013 at 7:06 am

      You ran the Add Birthdays and Anniversaries to calendar macro on this page and it didn't fix the problem?

      Reply
  35. golftech2011 says

    February 11, 2013 at 2:41 am

    Your macro for adding birthdays to my calender does not do anything when I run it in outlook. calender still does not show imported contacts birthdays.
    All macros are enabled and no errors appear when running the macro.
    any suggestions?

    Reply
    • Diane Poremsky says

      February 11, 2013 at 6:14 am

      Are the contacts in the default contacts folder? It should work with contacts in any folder, but the first thing I would check is with a new contact - create a fake contact and enter today as the birthday. Was a birthday event created?

      Secondly, you can uncomment this line so that the contacts flash on the screen as it runs - it's really annoying but will tell you if the code is running.

      ' If you want to see that it's working, uncomment this line
      myFolder.Items(i).Display

      Reply
  36. Leanne says

    July 27, 2012 at 7:46 am

    I do not want to add birthday to contact I want to add birthday to calender and I want this to recurrent so htat I do not have to add it to my calender every year. I don't have contact details for all my contacts e.g. my Dad does not have email and is not a contact online neither is my Aunt or Uncle.

    Reply
    • Diane Poremsky says

      July 27, 2012 at 7:54 am

      If you want to create birthday events on your calendar, create an all day appointment with a recurrence pattern of 1 yr.

      Reply
  37. Bruce Hamilton says

    June 16, 2012 at 12:35 am

    I have attempted to add birthdays of family members who have same contact details, so do not need to generate another contact file. How can this be achieved in a smilpe manner?

    Reply
    • Diane Poremsky says

      June 16, 2012 at 8:54 pm

      You can either add custom fields or enter the b-days into the Notes field. If you want events on your calendar, create the birthday events yourself and link them to the Contact. You can turn on contact linking in Options, Contact options.

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Visit Slipstick Forums.
What's New at Slipstick.com

Latest EMO: Vol. 31 Issue 3

Subscribe to Exchange Messaging Outlook






Support Services

Do you need help setting up Outlook, moving your email to a new computer, migrating or configuring Office 365, or just need some one-on-one assistance?

Our Sponsors

CompanionLink
ReliefJet
  • Popular
  • Latest
  • Week Month All
  • Jetpack plugin with Stats module needs to be enabled.
  • Sync Issues and Errors with Gmail and Yahoo accounts
  • Error Opening iCloud Appointments in Classic Outlook
  • Opt out of Microsoft 365 Companion Apps
  • Mail Templates in Outlook for Windows (and Web)
  • Urban legend: Microsoft Deletes Old Outlook.com Messages
  • Buttons in the New Message Notifications
  • Move Deleted Items to Another Folder Automatically
  • Open Outlook Templates using PowerShell
  • Count and List Folders in Classic Outlook
  • Google Workspace and Outlook with POP Mail
Ajax spinner

Recent Bugs List

Microsoft keeps a running list of issues affecting recently released updates at Fixes or workarounds for recent issues in classic Outlook (Windows).

For new Outlook for Windows: Fixes or workarounds for recent issues in new Outlook for Windows .

Outlook for Mac Recent issues: Fixes or workarounds for recent issues in Outlook for Mac

Outlook.com Recent issues: Fixes or workarounds for recent issues on Outlook.com

Office Update History

Update history for supported Office versions is at Update history for Office

Outlook Suggestions and Feedback

Outlook Feedback covers Outlook as an email client, including Outlook Android, iOS, Mac, and Windows clients, as well as the browser extension (PWA) and Outlook on the web.

Outlook (new) Feedback. Use this for feedback and suggestions for Outlook (new).

Use Outlook.com Feedback for suggestions or feedback about Outlook.com accounts.

Other Microsoft 365 applications and services




New Outlook Articles

Sync Issues and Errors with Gmail and Yahoo accounts

Error Opening iCloud Appointments in Classic Outlook

Opt out of Microsoft 365 Companion Apps

Mail Templates in Outlook for Windows (and Web)

Urban legend: Microsoft Deletes Old Outlook.com Messages

Buttons in the New Message Notifications

Move Deleted Items to Another Folder Automatically

Open Outlook Templates using PowerShell

Count and List Folders in Classic Outlook

Google Workspace and Outlook with POP Mail

Newest Code Samples

Open Outlook Templates using PowerShell

Count and List Folders in Classic Outlook

Insert Word Document into Email using VBA

Warn Before Deleting a Contact

Use PowerShell to Delete Attachments

Remove RE:, FWD:, and Other Prefixes from Subject Line

Change the Mailing Address Using PowerShell

Categorize @Mentioned Messages

Send an Email When You Open Outlook

Delete Old Calendar Events using VBA

VBA Basics

How to use the VBA Editor

Work with open item or selected item

Working with All Items in a Folder or Selected Items

VBA and non-default Outlook Folders

Backup and save your Outlook VBA macros

Get text using Left, Right, Mid, Len, InStr

Using Arrays in Outlook macros

Use RegEx to extract message text

Paste clipboard contents

Windows Folder Picker

Custom Forms

Designing Microsoft Outlook Forms

Set a custom form as default

Developer Resources

Developer Resources

Developer Tools

VBOffice.net samples

SlovakTech.com

Outlook MVP David Lee

Repair PST

Convert an OST to PST

Repair damaged PST file

Repair large PST File

Remove password from PST

Merge Two Data Files

Sync & Share Outlook Data

  • Share Calendar & Contacts
  • Synchronize two computers
  • Sync Calendar and Contacts Using Outlook.com
  • Sync Outlook & Android Devices
  • Sync Google Calendar with Outlook
  • Access Folders in Other Users Mailboxes

Diane Poremsky [Outlook MVP]

Make a donation

Mail Tools

Sending and Retrieval Tools

Mass Mail Tools

Compose Tools

Duplicate Remover Tools

Mail Tools for Outlook

Online Services

Calendar Tools

Schedule Management

Calendar Printing Tools

Calendar Reminder Tools

Calendar Dates & Data

Time and Billing Tools

Meeting Productivity Tools

Duplicate Remover Tools

Productivity

Productivity Tools

Automatic Message Processing Tools

Special Function Automatic Processing Tools

Housekeeping and Message Management

Task Tools

Project and Business Management Tools

Choosing the Folder to Save a Sent Message In

Run Rules on messages after reading

Help & Suggestions

Submit Outlook Feature Requests

Slipstick Support Services

Buy Microsoft 365 Office Software and Services

Visit Slipstick Forums.

What's New at Slipstick.com

Home | Outlook User | Exchange Administrator | Office 365 | Outlook.com | Outlook Developer
Outlook for Mac | Common Problems | Utilities & Addins | Tutorials
Outlook & iCloud Issues | Outlook Apps
EMO Archives | About Slipstick | Slipstick Forums
Submit New or Updated Outlook and Exchange Server Utilities

Send comments using our Feedback page
Copyright © 2026 Slipstick Systems. All rights reserved.
Slipstick Systems is not affiliated with Microsoft Corporation.