AppointmentItem Object

The AppointmentItem object represents an appointment in a calendar folder.

At a Glance

Specified in type library: CDO.DLL
First available in: CDO Library version 1.2
Parent objects: Messages collection
Child objects: Attachments collection
Fields collection
Recipients collection
RecurrencePattern
Default property: Subject

The AppointmentItem object is a subclass of the Message object and exposes all the same properties and methods, except for the Message object's Forward, Reply, and ReplyAll methods. In the following tables of properties and methods, those that are common with the Message object are linked to their descriptions for the Message object. Only the properties and methods unique to the AppointmentItem object are described in this section.

Properties


Name
Available since version
Type

Access
AllDayEvent 1.2 Boolean Read/write
Application 1.2 String Read-only
Attachments 1.2 Attachment object or Attachments collection object Read-only
BusyStatus 1.2 Long Read/write
Categories 1.2 String array Read/write
Class 1.2 Long Read-only
Conversation 1.2 (Obsolete. Do not use.) Read/write
ConversationIndex 1.2 String Read/write
ConversationTopic 1.2 String Read/write
DeliveryReceipt 1.2 Boolean Read/write
Duration 1.2 Long Read-only
Encrypted 1.2 Boolean Read/write
EndTime 1.2 Variant (vbDate format) Read/write
Fields 1.2 Field object or Fields collection object Read-only
FolderID 1.2 String Read-only
ID 1.2 String Read-only
Importance 1.2 Long Read/write
IsRecurring 1.2 Boolean Read-only
Location 1.2 String Read/write
MAPIOBJECT 1.2 IUnknown object Read/write (Note: Not available to Visual Basic applications)
MeetingResponseStatus 1.2 Long Read/write
MeetingStatus 1.2 Long Read/write
Organizer 1.2 AddressEntry object Read-only
Parent 1.2 Messages collection object Read-only
ReadReceipt 1.2 Boolean Read/write
Recipients 1.2 Recipients object or Recipients collection object Read/write
ReminderMinutesBeforeStart 1.2 Long Read/write
ReminderSet 1.2 Boolean Read/write
ReplyTime 1.2 Variant (vbDate format) Read/write
ResponseRequested 1.2 Boolean Read/write
Sender 1.2 AddressEntry object Read/write
Sensitivity 1.2 Long Read/write
Sent 1.2 Boolean Read/write
Session 1.2 Session object Read-only
Signed 1.2 Boolean Read/write
Size 1.2 Long Read-only
StartTime 1.2 Variant (vbDate format) Read/write
StoreID 1.2 String Read-only
Subject 1.2 String Read/write
Submitted 1.2 Boolean Read/write
Text 1.2 String Read/write
TimeCreated 1.2 Variant (vbDate format) Read-only
TimeExpired 1.2 Variant (vbDate format) Read/write
TimeLastModified 1.2 Variant (vbDate format) Read-only
TimeReceived 1.2 Variant (vbDate format) Read/write
TimeSent 1.2 Variant (vbDate format) Read/write
Type 1.2 String Read/write
Unread 1.2 Boolean Read/write

Methods


Name
Available since version
Parameters
ClearRecurrencePattern 1.2 (none)
CopyTo 1.2 folderID as String,
(optional) storeID as String
Delete 1.2 (none)
GetRecurrencePattern 1.2 (none)
IsSameAs 1.2 objMessage2 as Object
MoveTo 1.2 folderID as String,
(optional) storeID as String
Options 1.2 (optional) parentWindow as Long
Respond 1.2 RespondType as Long
Send 1.2 (optional) saveCopy as Boolean,
(optional) showDialog as Boolean,
(optional) parentWindow as Long
Update 1.2 (optional) makePermanent as Boolean,
(optional) refreshObject as Boolean

Remarks

An AppointmentItem object is distinguished from a Message object by its Type property containing IPM.Appointment.

New AppointmentItem objects can only be created by using the Add method on a Messages collection obtained from a Folder object reserved for calendar data:

Dim objSession As Session 
  Dim objCalendarFolder As Folder 
  Dim objAppointments As Messages 
  Dim objNewAppointment As AppointmentItem 
 
  Set objCalendarFolder = objSession.GetDefaultFolder _ 
                                     (CdoDefaultFolderCalendar) 
  Set objAppointments = objCalendarFolder.Messages 
  Set objNewAppointment = objAppointments.Add 
 

An appointment can be obtained from its parent Messages collection using the collection's Item property. To get to the Messages collection in a folder, use the Folder object's Messages property. If you know an appointment's unique identifier, you can obtain it directly from the Session object's GetMessage method.

You can apply a MessageFilter object to a Messages collection containing appointments. However, the current version of CDO only supports filtering on the EndTime and StartTime properties. An attempt to filter on any other properties, including the inherited Message object properties, returns CdoE_TOO_COMPLEX.

You can turn an appointment into a meeting by setting its MeetingStatus property to CdoMeeting and sending it to one or more recipients. The appointment becomes a meeting as of the moment you call its Send method, at which time CDO instantiates a MeetingItem object and identifies you in the appointment's Organizer property. The MeetingItem object becomes a member of the Messages collection of each recipient's Inbox. They can treat it programmatically like the Message objects in the collection.

You should not send a meeting request for an appointment to any recipient that represents a distribution list, because the status of its individual members cannot be returned to you. You should only send the meeting request to single messaging users. You can determine if a messaging user is a distribution list by checking the DisplayType property of the AddressEntry object representing that user.

To cancel a meeting, you set the MeetingStatus property to CdoMeetingCanceled and send it to all the recipients. Once you have sent the cancellation you can release the underlying AppointmentItem object, typically by using the Set statement to assign it to Nothing. Note that simply releasing the appointment does not cancel the meeting, and in fact can produce unexpected behavior. You should always cancel first. Only the organizer of a meeting can cancel or release it.

If you organize and then cancel a meeting when your active calendar store is Microsoft® Outlook™, you must not only release the underlying AppointmentItem object but Delete it from the Messages collection as well. Failure to do this could cause unexpected results when working with the folders and their contents.

You can cause an appointment or meeting to become recurring by calling its GetRecurrencePattern method, which sets the IsRecurring property to True and returns a child RecurrencePattern object describing the recurrence characteristics. At first the RecurrencePattern object is populated with the default values indicated in its property descriptions, but you can change them as desired. The appointment or meeting can be restored to nonrecurring status with the ClearRecurrencePattern method, which also resets IsRecurring to False.

Making an appointment recurring does not create any additional AppointmentItem objects for the recurrences. But you may wish to instantiate an individual recurrence so that you can edit it and make it different from other recurrences in the series. You do this by using a MessageFilter object to restrict CdoPR_START_DATE and CdoPR_END_DATE to the start and end of the desired occurrence, and then calling the Messages collection's GetFirst method.

If you instantiate an individual recurrence and change one of its properties, and this property is subsequently modified on the original appointment, the modification to the original is not propagated to your recurrence. However, modifications on the original to properties which you have not changed in your recurrence are automatically propagated.

If any change is made to the original appointment's RecurrencePattern object after you have instantiated one or more individual recurrences, some or all of them may be automatically deleted. Microsoft® Outlook™ deletes all individual recurrences, while Microsoft Schedule+ deletes only those that are earlier than the new PatternStartDate or later than the new PatternEndDate. CDO does not automatically delete any individual recurrences.

If your calendar folder is in Microsoft Outlook and you change an individual recurrence's StartTime or EndTime property, the following rules are enforced:

If these rules are not followed, Outlook returns CdoE_COLLISION on your next call to Send or Update.

An individual recurrence's GetRecurrencePattern method returns the same RecurrencePattern object as does the original appointment's GetRecurrencePattern. However, the individual recurrence is not the parent of the recurrence pattern. The original AppointmentItem object is the parent and in fact is obtained from the RecurrencePattern object through its Parent property:

Dim objRecAppt As AppointmentItem ' an individual recurrence 
  Dim objOrigAppt As AppointmentItem ' the original appointment 
  Set objOrigAppt = objRecAppt.GetRecurrencePattern.Parent 
 

To edit an entire recurring series of appointments, you modify the appropriate properties on either the original AppointmentItem object or its child RecurrencePattern object. To edit an individual recurrence only, you instantiate it and modify its AppointmentItem properties. All changes take effect when you call the appointment's Send or Update method.

The original appointment's StartTime, EndTime, and AllDayEvent properties are disabled whenever its IsRecurring property is True. Any attempt to access them while in this state returns CdoE_NO_SUPPORT. You must use the recurrence pattern's PatternStartDate, PatternEndDate, StartTime, and EndTime properties to edit a recurring series.

An AppointmentItem object can be rendered into HTML hypertext using the CDO Rendering ObjectRenderer object. To specify this, set the object renderer's DataSource property to the AppointmentItem object itself. The individual properties that can be rendered with the RenderProperty method are indicated in the AppointmentItem and Message object property descriptions.

One or more appointments can also be rendered by the CDO Rendering CalendarView object's RenderAppointments method. The ContainerRenderer object's DataSource property must be set to the parent Messages collection and its CurrentView property to a calendar view.

An AppointmentItem object can also be rendered as the parent of a Recipients collection, using the ContainerRenderer object. The individual properties that can be rendered with the RenderProperty method are indicated in the AppointmentItem and Message object property descriptions.