ID: Q186753
The information in this article applies to:
This article contains sample code that allows you to check someone else's schedule (or a resource account's schedule) programmatically using Collaboration Data Objects (CDO) to obtain free/busy information.
NOTE: You do not need any special access permission to see if another user has scheduled Tentative, Busy, Free or Out of Office time.
WARNING: ANY USE BY YOU OF THE CODE PROVIDED IN THIS ARTICLE IS AT YOUR OWN RISK. Microsoft provides this code "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
1. Open a new Visual Basic standard executable project.
2. Create a reference to the Microsoft Collaboration Data Objects (CDO) 1.2
Library, which is Cdo.dll.
3. Create a Command button named Command1 on the form.
4. Copy and paste the following code into the form:
Private Sub Command1_Click()
Dim ObjSession As MAPI.Session
Dim ObjMessage As Message
Dim ObjAddressEntry As AddressEntry
Set ObjSession = CreateObject("mapi.session")
ObjSession.Logon profilename:="YourProfileName"
Set ObjMessage = ObjSession.Inbox.Messages.Add
Set ObjRecipColl = ObjMessage.Recipients
Set ObjOneRecip = ObjRecipColl.Add
'Type the alias of the person or the resource account.
ObjOneRecip.Name = "JoeDoe"
ObjOneRecip.Resolve
Set ObjAddressEntry = ObjOneRecip.AddressEntry
'Specify the date/time of the beginning of the first time slot.
StartTime="1998/06/03 8:00:00 AM"
'Specify the date/time of the end of the last time slot.
EndTime="1998/06/03 10:00:00 AM"
'Specify the length of each time slot in minutes.
'If Interval parameter is less than 1, GetFreeBusy returns
'CdoE_INVALID_PARAMETER.
Interval=60
'Interval parameter determines the number of time slots.
'For this example, Interval is set to 60 minutes. Therefore,
'there will be 2 time slots between the StartTime and the EndTime.
'The first time slot is between 8:00:00-9:00:00 AM.
'The second time slot is between 9:00:00-10:00:00 AM.
FreeBusy = ObjAddressEntry.GetFreeBusy(StartTime, EndTime, _
Interval)
'Since there are two time slots, the GetFreeBusy method returns a
'string with length 2. For example, FreeBusy = "21" indicates that
'there is a tentative commitment during the time slot 1. Also,
'there is a confirmed commitment during the time slot 2.
Msg = ""
For i = 1 To Len(FreeBusy)
Select Case Mid(FreeBusy, i, 1)
Case "0"
TempMsg = "Available for meetings/appointments during " & _
"the time slot " & i & vbLf
Case "1"
TempMsg = "At least one tentative commitment during " & _
"the time slot " & i & vbLf
Case "2": TempMsg = "At least one confirmed commitment " & _
"during the time slot " & i & vbLf
Case "3": TempMsg = "Out-of-office (OOF) for at least " & _
"part of the time slot " & i & vbLf
End Select
Msg = Msg + TempMsg
Next
MsgBox Msg
ObjSession.Logoff
Set ObjMessage = Nothing
Set ObjRecipColl = Nothing
Set ObjOneRecip = Nothing
Set ObjAddressEntry = Nothing
Set ObjSession = Nothing
End Sub
5. Run the project and click Command1. A message box displays free/busy
information for each time slot for the selected time frame.
For information about Collaboration Data Objects and Active Messaging, please see the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q176916
TITLE : INFO: Active Messaging and Collaboration Data Objects (CDO)
CDO 1.2 Online Help; search on: "GetFreeBusy"; "AddressEntry"
Additional query words: kbDSupport kbdse cdo
Keywords : kbCDO120 kbMsg kbVBp kbGrpMsg
Version : WINDOWS:1.2
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: April 7, 1999