Adding Outlook's predefined Holidays to the calendar is a very simple process:
In Outlook 2010 and up, go to File > Options > Calendar and then click the Add Holidays button. Select the desired Holidays and click OK.
In Outlook 2007 and older, go to Tools > Options > Preference tab > Calendar Options and click the Add Holidays button. Select the desired Holidays and click OK.
It can take a few minutes to add all the holidays, depending on how many countries you are adding.
While major religious holidays are listed with the holidays for some countries, there are separate listings for Christian, Islamic, and Jewish religious holidays.
You will you receive the following message if you previously added the holidays for a specific country. However, if you are upgrading Outlook or using an updated HOL file, it may be detecting older holidays. If you choose Yes and discover your holidays are duplicated, you can delete all of the Holidays and re-run the Add Holidays wizard.
Holidays for [location] are already installed. Do you want to install them again?
See How to Remove Duplicate Holidays From the Calendar for complete instructions.
Create a Custom Holiday File | Use a Script to Import Holidays | Move Events Manually | Custom HOL sample | More Information
Create a Custom Holiday File
Because of tighter security in current versions of Windows, it's generally easier to create a new HOL file. This has one advantage: you only need to double click on the file to open the Add Holidays dialog. You do not have to go to Options > Calendar > Add Holidays to add the holidays to your calendar.
The Outlook.HOL file lists holidays in the following format, one date per line:
[location] ###
Holiday description, yyyy/mm/dd
Holiday description, yyyy/mm/dd
The ### is the total number of holidays listed for the location (or country). Note that there is a space between the bracket and the number. On each holiday line, there is a comma and space between the holiday description (subject) and the date. For example:
[United States] 3
Independence Day, 2012/07/04
Thanksgiving Day, 2012/11/27
Christmas Day, 2012/12/25
To create a custom set of holidays, you can create your own HOL file in notepad by following these steps. Tip: you can work with the dates in Excel, then copy and paste into Notepad to save as an HOL file.
- Open Notepad
- Enter a "county" header, in [country] format. For example, I might use [Slipstick Systems]
- On separate lines under the header, enter the events, one per line in
Event subject, yyyy/mm/dd format. - Save the file using the HOL extension.
- Double click on the file. If Outlook is not on top of the screen, switch to it.
- Select the location and click Add.
Import Holidays
You can use a script to import holidays into your calendar. Save this script as a .vbs file and call it from a logon script. (If you want users to double click on a file to run, use the .HOL method instead.)
Const olFolderCalendar = 9 Const olAppointmentItem = 1 Const olOutOfOffice = 3 CRLF = chr(13)&chr(10) 'Wscript.echo "Importing 2017 Company Holidays."+ CRLF + CRLF + "Press OK to Continue." Set objOutlook = CreateObject("Outlook.Application") Set objNamespace = objOutlook.GetNamespace("MAPI") Set objCalendar = objNamespace.GetDefaultFolder(olFolderCalendar) Set objDictionary = CreateObject("Scripting.Dictionary") objDictionary.Add "August 1, 2017", "Company Holiday - Holiday Name" objDictionary.Add "August 21, 2017", "Company Holiday - Holiday Name" objDictionary.Add "August 18, 2017", "Company Holiday - Holiday Name" objDictionary.Add "August 26, 2017", "Company Holiday - Holiday Name" objDictionary.Add "September 1, 2017", "Company Holiday - Holiday Name" objDictionary.Add "November 11, 2017", "Company Holiday - Veterans' Day" objDictionary.Add "November 27, 2017", "Company Holiday - Thanksgiving Day" objDictionary.Add "November 28, 2017", "Company Holiday - Friday After Thanksgiving" objDictionary.Add "December 25, 2017", "Company Holiday - Christmas Day" objDictionary.Add "December 26, 2017", "Company Holiday - Day after Christmas" colKeys = objDictionary.Keys For Each strKey in colKeys dtmHolidayDate = strKey strHolidayName = objDictionary.Item(strKey) Set objHoliday = objOutlook.CreateItem(olAppointmentItem) With objHoliday .Subject = strHolidayName .Start = dtmHolidayDate .End = dtmHolidayDate .Categories = "Company Holidays" .AllDayEvent = True .ReminderSet = False .BusyStatus = olOutOfOffice .Save End With Next Set objOutlook = Nothing Wscript.echo "Completed Importing 2017 Company Holidays."+ CRLF + CRLF + "Press OK to End." Wscript.quit
For a PowerShell example and a VBScript that uses a CSV file, see Outlook Code: Importing bank holidays from an Outlook.hol based CSV file (MSDN).
When the Holiday file is wrong
The question a lot of people ask:
Why does Outlook put some Holidays on the wrong date?
I don't recall any version of Outlook shipping with a perfect Holiday file.
The problem is in the Outlook.HOL file used to import holidays - the author (or authors) get some dates wrong. While we expect perfection from them, to be fair, with hundreds of locations and thousands of dates in the HOL file, its easy to make mistakes. (There are more than 21,000 holidays in Outlook 2010's HOL file.) However, it shouldn't be that hard to get common holidays, like the Monday after Easter right (that is one of the big mistakes in Outlook 2010's HOL file.)
You can either move the events to the correct date, edit this file yourself, or download an updated version. You can even create your own HOL file.
A link to an updated Holiday file containing dates through 2028 is available at Missing Holidays. For Outlook 2002 and up. Note, this is the same file that is included with Outlook 2010 but contains the correct dates for Easter Monday.
Move Events Manually
To fix a holiday that's already in your Calendar folder on the wrong date, just drag the item to the correct date.
Fix a Holiday File
Outlook stores a read-only text file called Outlook.HOL in the installation directory for your version and language of Office (ie, C:\Program Files\Microsoft Office\root\Office16\1033 for US English version of Office), which it uses for the Options > Calendar Options > Add Holidays feature.
You can open the HOL file in notepad and edit it.
- Start Windows Explorer, locate the Outlook.HOL file. (You may want to make a backup copy.)
- Right-click on Outlook.HOL and choose Open with then select Notepad from the list.
- To edit a specific country's dates, use Find to locate the Country by name and edit the dates.
- To add a new location, press CTRL+END to position the insertion point at the end of the file.
- Type a new country header and custom holidays using the format described below.
- Save and close Outlook.HOL. Note: Due to security features in newer versions of Windows, you will need to give your Windows account permissions to write to the Office\xxxx folder.
Fun with Holiday files: Countdown the days in a year
You can use a custom HOL file for any all day events you desire. In this example, we are going to add all day events to the calendar to countdown the days in a year, from 1 to 365 and include the number of days left in the year.
Do you need to know what day of the year today is or how many days are left until the end of the year? Although Outlook doesn't display these numbers, it's very easy to create a file counting the days using Excel and import it into your calendar.
The original suggestion came from "Alawishes". He suggested using a CSV containing the Subject, Date, and a Category then importing it.
Create a file with the Subject, Date, and a Category using Excel's fill series feature then save it as a CSV to Import into Outlook's Calendar. While a category is not required, it makes it easy to filter the events. Using this method, you can import the events to any calendar.
While his suggestion is a great idea and has certain advantages: you can choose your own category or import it into a different calendar folder, you could create a HOL file and save the Import step. In the CSV, use only the Subject and Date fields then save it and change the extension to HOL. Open the HOL in Notepad and change the line above the dates to a "location" and the number of items in the "location" group, in [location] 366 format. (The location name can be anything you like. )
Users can double click on the HOL to open the Add Holidays dialog and add the dates to the default calendar. When you use this method the events will be added to the Holiday category.
To delete these Holidays, group, sort, or filter by Location field and delete the items for your location.
We have sample HOL files available for download. When the HOL includes more than one year or (day and week numbers), they are separate "locations" so you can choose which ones yo install. They are in English, but you can open the HOL files in Notepad and use search & replace to change the text.
Day Numbers 2023 through 2028 Day & Week Numbers 2022
Day & Week Numbers 2021 DayNumbers 2020
DayNumbers 2019
Note: You may need to right click on the link and use Save Target As (or Save Link As). Double click on the HOL file to open it in the Add Calendar wizard.
More Information
To remove duplicate holidays from the Calendar folder
US-only holidays, split between Federal holidays and popular observances is available here.
HOL file for Indonesia 2023 - 2025 (Dates are from timeanddate.com)
A HOL for Cote d'Ivoire (Ivory Coast) for years 2019 though 2026 is here: Coted'Ivoire.HOL. This was created using the holiday list at Holidays and Observances in Cote d'Ivoire (Timeanddate.com)
A HOL for Palestine for the years 2021 - 2026 is here:
Palestine.HOL This list was created from the holidays list at Public Holidays in Palestine | Office Holidays. Islamic holidays are included only for 2021 and 2022. (Outlook includes a separate Islamic religious holiday list.)
Is there a way to add a start and end time to a custom notepad holiday list? I'd like them to show up as a start of 8am and end at 5pm to block the calendar.
No, not in the holidays. They are all day events only.
Hi Diane. I've been a fan and user of much of your stuff for years. I recently tried the VBS script to add holidays on Outlook 2013 and noticed a strange issue. When you view the appointment details in list view or in the form, the item is set as an all day event and Out of Office as specified in the script but when you look at the calendar view, It appears as a 30 minute appointment starting at 12:00 AM and free. Also, the free/busy on the server does not show busy.
We can manually fix by toggling the all day appointment off and on and saving the appointment but would like to be able to use the script for all our users without this step. Any ideas?
1. Is it possible to add the "Show as" field - to show the day as "Out of office", or "Busy"?
2. Some of the rows have a comma separated number at the end (after the date string) - seems like an optional value. Any idea what's this for?
1. No, not using these methods. you'd need to change them after import or create them as appointments, not holidays.
2. The format for holidays is name,date - those are the only values.
Hello Diane,
I made a custom hol file named holidays.hol. I want to deploy it to all users (4000+) but without a user interaction. In the current state when I doubleclick holidays.hol I must select what days to import. I want to skip this and just enter the holidays without the question which one to import. Can I somehow skip this step so we can push this file to all users and execute it?
Hi Diane, I'm trying to use the .HOL method, however, I'd like to build in reminders to these events in my .txt file, is there any easy way to do this?
Sorry, no, the HOL does not support reminders. I don't recall if reminders are enabled for new items by default, if ones would be added to the imports, but that would be the only way to get reminders on them during import.
Hi!
Is there a way to make outlook auto update the imported dates from the .hol file?
I'm trying to make a calendar that views important dates, but want to have the possibility to change/add dates without sending a new file every week.. :)
Thanks!
No, not totally. You can restart Outlook using a switch (outlook.exe /hol holfilename.hol) or double click on the HOL file - if any events in the file already exist, they will be duplicated.
if this is a corporate network situation, use a logon script - this script will add events to the default calendar: Add Events to Calendar
Is there a way to create time specific events with the .HOL? Or is it just 'all day" events? Thanks!
The HOL file only creates all day events.
I have created the .hol file (from scratch) saved as .hol (unicode - it syas "hol file"). BUt when I double click it, it does not open in outlook, only the notepad opens. How do i get MY .hol file outlook?
Outlook 2013
That happens when either the extension is set to use notepad, not Outlook or the extension is wrong. What is the icon - notepad icon or a white icon with a calendar over it? File Type is 'Outlook Holidays'