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
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)
Create birthday and anniversary appointments in a calendar based on a list of people. These appointments can out as far out as you would like. You can include age and anniversary number (optional).
Thanks for the macro. Worked perfectly.
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?
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!
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.
I would like for outlook calendar to display a number via count like "Dave is 62 today" or "Dave and Mary' 37th Anniversary"
This is one way: https://www.slipstick.com/developer/code-samplesa/add-persons-age-birthday-event/
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?
See https://www.slipstick.com/developer/send-email-outlook-reminders-fires/ for one method.
is there someone I can hire to make the add-in for me?
We don't do addins and I'm not sure if anyone on this list is taking small projects - [post2post id="11049"]
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?
Yes, as written, it applies only to birthday and anniversaries. It could be compiled into an addin and deployed.
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.
is it possible to hire someone to create this addin for me?
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.
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?
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.