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.
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
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) |

Henk says
Thanks for the macro. Worked perfectly.
chelsea says
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?
Heather says
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!
Diane Poremsky says
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.
heh says
Thank you!
dave says
I would like for outlook calendar to display a number via count like "Dave is 62 today" or "Dave and Mary' 37th Anniversary"
Diane Poremsky says
This is one way: https://www.slipstick.com/developer/code-samplesa/add-persons-age-birthday-event/
Fancy says
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?
Diane Poremsky says
See https://www.slipstick.com/developer/send-email-outlook-reminders-fires/ for one method.
Hafez says
is there someone I can hire to make the add-in for me?
Diane Poremsky says
We don't do addins and I'm not sure if anyone on this list is taking small projects - [post2post id="11049"]
Hafez says
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?
Diane Poremsky says
Yes, as written, it applies only to birthday and anniversaries. It could be compiled into an addin and deployed.
Hafez says
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
is it possible to hire someone to create this addin for me?
Diane Poremsky says
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.
chris gambino says
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?
Diane Poremsky says
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.
Kelly D says
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?
Diane Poremsky says
They should use the format in the contact's full name field.
RAY BATES says
I WANT A MONTHY CALENDAR WHEREI CAN FILL IN BIRTHDAYS AND ANNIVERSERIES AND OTHERE EVENTS
Diane Poremsky says
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.
sharon p says
When I enter a contact in People & enter a birthday it no longer shows up on Calendar. Any idea why?
Diane Poremsky says
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.
Kristi says
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?
Diane Poremsky says
No, sorry, that field needs a year.
JBBinNAS says
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.
scott wheeler says
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.
Diane Poremsky says
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.
Diane Poremsky says
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.
scott wheeler says
Is there a way to have the number of birthday or anniversary show up (i.e. 20th Anniversary)?
Diane Poremsky says
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.
Bunny says
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.
Bunny says
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.
Diane Poremsky says
You know how Outlook works. :)
Luis Alvarado says
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
Sergii Vakula says
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 ---
Phillip Hurst says
Works like a charm. Thanks!
Phillip Hurst says
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.
Diane Poremsky says
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.
Diane Poremsky says
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/
Dave Faulkner says
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
Diane Poremsky says
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
Michael Moser says
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
Diane Poremsky says
That lines needs to be at the top of ThisOutlookSession.
Erica Woods says
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!
Diane Poremsky says
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.
Noel O'Kelly says
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.
Diane Poremsky says
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.
Noel O'Kelly says
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.
Diane Poremsky says
What version of Outlook? How many data files and calendars do you have in your profile? Are anniversaries also affected?
Chris Reid says
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.
Diane Poremsky says
No, not automatically. You could move the birthdays (either manually or using VBA) but anytime you edit a contact, outlook may recreate it.
Tomislav Galeta says
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...
Diane Poremsky says
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.
Tomislav Galeta says
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.
Tomislav Galeta says
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?
Tomislav Galeta says
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.
Diane Poremsky says
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.
Tomislav Galeta says
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!
Diane Poremsky says
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?
Tomislav Galeta says
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 :-(
Diane Poremsky says
Open the calendar in the pst, switch to a list view and select all, then move to the Exchange calendar.
Tomislav Galeta says
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?
Diane Poremsky says
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?)
Mike Hutchko says
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?
Diane Poremsky says
You ran the Add Birthdays and Anniversaries to calendar macro on this page and it didn't fix the problem?
golftech2011 says
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?
Diane Poremsky says
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
Leanne says
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.
Diane Poremsky says
If you want to create birthday events on your calendar, create an all day appointment with a recurrence pattern of 1 yr.
Bruce Hamilton says
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?
Diane Poremsky says
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.