HOWTO: VB/CDO 1.21 - Cancel a Recurring Meeting using a single Recurrance
' This code finds an meeting occurance and uses it to cancel the entire meeting series and
' have "Cancelled:" in front of the subject lines on the update messages sent to the recipient(s).
' To use:
' Create a recurring meeting inside the date/time range below with the subject "testabc".
' Invite an attendee.
' Change the time of one occorance and send the update.
' Have the attendee use OWA/Outlook/etc to accept.
' Now run the code.
' TODO:
' Create a VB6 form
' Add a button and paste-in the code below.
' Note: CDO 1.21 is not supported under .NET code.
' Note: CDO 1.21 needs to run in-network.
' Note: Be sure to be on the latest version of CDO 1.21.
Dim objSession As MAPI.Session
Dim ObjMessage As MAPI.Message
Dim objRecipient As MAPI.Recipient
Dim oAppointment As MAPI.AppointmentItem
Dim oCalendarFolder As MAPI.Folder
Dim objOrig As AppointmentItem
Dim objRecPatt As RecurrencePattern
Dim objRecip As Recipient
' This is what I'm searching for
Dim sFromDate As String
Dim sToDate As String
Dim sFindSubject As String
sFromDate = "1/31/08" ' TODO: Change
sToDate = "1/1/08" ' TODO: Change
sFindSubject = "testabc" ' TODO: Change
'Create the Session Object.
Set objSession = New MAPI.Session
Dim oMsgCollection As Object
Dim oMsgFilter As Object
'Logon using the session object.
'objSession.Logon "", "", False, True, 0, True, "myserver" & vbLf & "mymailbox"
objSession.Logon
Set oCalendarFolder = objSession.GetDefaultFolder(CdoDefaultFolderCalendar)
' We are going to filter to get appts....
Set oMsgCollection = oCalendarFolder.Messages
Set oMsgFilter = oMsgCollection.Filter
oMsgFilter.Fields.Add CdoPR_START_DATE, sFromDate
oMsgFilter.Fields.Add CdoPR_END_DATE, sToDate
Dim oRecur As MAPI.RecurrencePattern
Set oRecur = Nothing
Dim bFound As Boolean
bFound = False
Set oAppointment = oMsgCollection.GetFirst
Do While Not oAppointment Is Nothing
' TODO: Add criteria as needed to the IF below to be certain you have the correct meeting.
If oAppointment.Subject = sFindSubject And bFound = False Then
Set oRecur = oAppointment.GetRecurrencePattern
With oRecur
oRecur.Parent.Subject = "Cancelled: " & oRecur.Parent.Subject
oRecur.Parent.Importance = CdoHigh
oRecur.Parent.BusyStatus = CdoFree
oRecur.Parent.MeetingStatus = CdoMeetingCanceled
oRecur.Parent.Update True, True
oRecur.Parent.Send True, False, 0
oRecur.Parent.Delete
End With
Set oRecur = Nothing
bFound = True ' Only need to do this once for the meeting.
End If
Set oAppointment = oMsgCollection.GetNext ' Now, lets look at the next item.
Loop
Set oAppointment = Nothing
Set oMsgCollection = Nothing
Set oMsgFilter = Nothing
Set oCalendarFolder = Nothing
objSession.Logoff
Set objSession = Nothing
Comments
Anonymous
May 05, 2008
Unfortunately, there is no facility to cancel a meeting via WebDAV. You may be able to delete an appointmentAnonymous
July 16, 2008
Unfortunately, there is no facility to cancel a meeting via WebDAV. You may be able to delete an appointment