Changing Appointment times with CDO



I'm running a vbscript to change the time of a calendar appointment,
it's fairly simple. The problem is that the reminder still comes up
the original day that I set. Example

I create an appointment for 2/10/06 at 8am with a reminder for 15
minutes. I using some other program and it realizes I need to change
the date, so my script goes in and finds that date, matches the subject
and changes the StartTime and Endtime. This works perfectly. Lets say
I updated it to 2/12/06 at 8am. I still get a reminder on 2/10 at 7:45
that says "Due in 2 days". Any ideas? Here's my code....

Sub UpdateAppointment(UserID)
Dim StartTime
Dim EndTime
Dim NewStartTime
Dim NewEndTime
Dim objAppointmentFilterField1
Dim objAppointmentFilterField2

Set CDOSession = CreateObject("MAPI.Session")
'Connect to CDO objects, MKE200 is a gateway to all mail servers
CDOSession.Logon , , , , , , "MKE200" & vbLf & UserID

'Get the Calendar folder
Set oFolder = CDOSession.GetDefaultFolder(CdoDefaultFolderCalendar)
Set oMessages = oFolder.Messages

'Create a filter in order to set a date range
Set oFilter = oMessages.Filter

'Get the OLD Due Date
'StartTime = Eworkgetfield("oldDueDate","")
StartTime = Ework.oldDueDate
EndTime = StartTime

Set objAppointmentFilterField1 = oFilter.Fields.Add (&H00600040,
Set objAppointmentFilterField2 = oFilter.Fields.Add (&H00610040,

NewStartTime = Ework.DueDate
NewEndTime = NewStartTime

Set oAppointment = oMessages.GetFirst
Do While Not oAppointment Is Nothing

'This IF checks the subject to ensure the proper appointment has been
If oAppointment.Subject = Ework.mDescription Then
'MsgBox("Found " & oAppointment.Subject)
oAppointment.StartTime = NewStartTime
oAppointment.EndTime = NewEndTime
exit sub
Set oAppointment = oMessages.GetNext
End If


End Sub



Michael Bauer

Am 3 Feb 2006 06:57:27 -0800 schrieb (e-mail address removed):

Did you try to set the ReminderMinutesBeforeStart property again?

Anyway I wonder how do you access e.g. the StartTime property in your code,
because that is unknown for a MAPI Message object.

Michael Bauer

Am 6 Feb 2006 05:51:18 -0800 schrieb Steve:

And what would be the proper way of accessing the startime?

Sorry, I never realized that MAPI knows an Appointment object which has
indeed a StartDate property.

Anyway, with a Message object you can access the StartDate with:
Debug.Print message.Fields("{0220060000000000C000000000000046}" & "0x820D")

The most common property tags are explained at


Hi Michael , i am using the same code and it's work fine the problem is when
i am trying to Update Recurring appointment it's updating only the one day
and for all appointments

Could you please help me .

Thanks, Uzi




sorry - "...and NOT for all appointments"

Hi Michael , i am using the same code and it's work fine the problem is when
i am trying to Update Recurring appointment it's updating only the one day
and NOT for all appointments


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question