How to add a holiday to a calendar using VB and CDO 1.21.
' How to add a holiday to a calendar using VB and CDO 1.21.
'
' This example code shows how to add a holiday to a calendar using VB and CDO 1.21.
' Set a reference to CDO 1.21 and do the TODO sections in the code.
' Holidays are All Day Appointments with the Category of "Holiday" set.
'
' CDO 1.21 can be use on:
' Exchange Server 2000
' Exchange Server 2003
' Exchange Server 2007 if CDO 1.21 is installed
' Outlook 2002 if CDO 1.21 is installed (from Outlook CD)
' Outlook 2003 if CDO 1.21 is installed (from Outlook CD)
' Outlook 2007 if CDO 1.21 is installed (from Exchange 2007 CDO download)
'
' If CDO 1.21 is used on an Exchange Server, then it needs to run on an
' account with permission to each mailbox it accesses.
'
' When CDO 1.21 is used on an Outlook client, the code is usually accessing the mailbox
' of the user who is currently logged-in. If the code needs to access a different mailbox,
' then permission must be granted to that user for that mailbox.
Dim oSession As MAPI.Session
Dim oFolder As MAPI.Folder
Dim oMsgs As MAPI.Messages
Dim oAppt As MAPI.AppointmentItem
Dim i As Integer
Dim sServer As String
Dim sUser As String
Set oSession = New MAPI.Session
sServer = "smarthost" 'TODO: Change this to the name of your server.
sUser = "somebody" 'TODO: Change this to the name of an email recipient
' Set the localid and codepage - this needs to be set BEFORE calling Logon (only needed if you are
' not creating this in English
'oSession.SetLocaleIDs CLng(1041), CLng(932) ' Japanese
oSession.Logon , , False, True, , , sServer & vbLf & sUser
''oSession.SetOption "TimeZone", 10 ' Use if the times are off. 10 is EST.
' 'See: Setting timezone options with CDO 1.21.
' https://blogs.msdn.com/webdav_101/archive/2008/01/31/setting-timezone-options-with-cdo-1-21.aspx
' Get Calendar folder
Set oFolder = oSession.GetDefaultFolder(CdoDefaultFolderCalendar)
' Create a new Appointment
Set oMsgs = oFolder.Messages
Set oAppt = oMsgs.Add
Dim sCategories(10) As String
sCategories(0) = "Holiday"
' Set up properties on the appointment
With oAppt
.Subject = "My Own Holiday"
.Location = "Test here"
.StartTime = #7/1/2004# ' DateAdd("h", 12, Date) ' Holiday is 7/1/2004.
.EndTime = #7/2/2004# ' DateAdd("h", 13, Date) ' Holiday ends at to the start of this time/day
.AllDayEvent = True
.Text = "This is my test holiday"
.BusyStatus = 0
.ConversationTopic = "Personal Holiday"
'.ReminderSet = True
'.ReminderMinutesBeforeStart = 15
.Categories = sCategories
.Encrypted = True
End With
' Call Update to save the appointment to the calendar
oAppt.Update (True)
oSession.Logoff
' Clean Up
Set oMsgs = Nothing
Set oAppt = Nothing
Set oFolder = Nothing
Set oSession = Nothing
For information on how to do this with Outlook, please refer to the following:
Outlook 2007
https://office.microsoft.com/en-us/outlook/HP012304061033.aspx?pid=CH102499821033
Outlook 2003
https://office.microsoft.com/en-us/outlook/HA010750021033.aspx
Outlook 2002
https://office.microsoft.com/en-us/outlook/HA010347761033.aspx