Adding 2016 Holidays to everyone's outlook calendars

I am creating a custom vacation calendar in outlook. I want to add all the entries to everyone's outlook calendars automatically or have them import the calendar. Does anyone know how to do this?

I'm trying to avoid sending invites to each user to add them to their calendar one at a time.
David MundtDirector of Information TechnologyAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ZombieAutopsy81IT Manager/Network AdministratorCommented:
David MundtDirector of Information TechnologyAuthor Commented:
We are using a hosted exchange provider and I cannot run powershell
omgangIT ManagerCommented:
Here's vbscript we use on the client.

Const olFolderCalendar = 9
Const olAppointmentItem = 1
Const olOutOfOffice = 3

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objCalendar = objNamespace.GetDefaultFolder(olFolderCalendar) 

Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "January 1, 2016", "New Year’s Day"    
objDictionary.Add "January 18, 2016", "Martin Luther King, Jr. Day"    
objDictionary.Add "February 15, 2016", "Presidents’ Day"
objDictionary.Add "May 30, 2016", "Memorial Day"
objDictionary.Add "July 4, 2016", "Independence Day"
objDictionary.Add "September 5, 2016", "Labor Day"
objDictionary.Add "October 10, 2016", "Columbus Day"
objDictionary.Add "November 8, 2016", "Election Day"
objDictionary.Add "November 11, 2016", "Veteran’s Day"
objDictionary.Add "November 24, 2016", "Thanksgiving Day"
objDictionary.Add "December 25, 2016", "Christmas Day"

colKeys = objDictionary.Keys

For Each strKey in colKeys
    dtmHolidayDate = strKey
    strHolidayName = objDictionary.Item(strKey)

    Set objHoliday = objOutlook.CreateItem(olAppointmentItem)  
    objHoliday.Subject = strHolidayName
    objHoliday.Start = dtmHolidayDate & " 9:00 AM"
    objHoliday.End = dtmHolidayDate & " 10:00 AM"
    objHoliday.AllDayEvent = True
    objHoliday.ReminderSet = False
    objHoliday.BusyStatus = olOutOfOffice

Wscript.Echo "Finished adding 2016 holidays to Outlook calendar"

Open in new window

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

omgangIT ManagerCommented:
So I just reread your Q.  I think you could accomplish what you want in a couple of ways.
1) enhance the code to instantiate the custom vacation calendar and then iterate through it adding an appointmentItem to the user's local Calendar in Oulook.
2) export your custom vacation calendar and work it into a list that you can add to the sample script (this is probably easier)

OM Gang
David MundtDirector of Information TechnologyAuthor Commented:
I've also got a mixed environment of Mac and PCs running outlook.
omgangIT ManagerCommented:
I have no experience with Macs but it's my understanding they won't run vbscript.  An Exchange server side solution would seem to be best in this case.  From what I just read, Outlook VBA is also not supported on Mac OS/Outlook 2011 so converting the script to VBA is also not a solution.

OM Gang
David MundtDirector of Information TechnologyAuthor Commented:
It is not the slickest solution but we may just need to send each individual entry as an invitation to each user.

We are transitioning to Office 365 in the next few months so I will be able to run powershell there at least.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.