【发布时间】:2009-07-03 23:45:09
【问题描述】:
我在公用文件夹中有一个日历 在几年的时间里,日历中大约有 15000 次约会 我已经使用 OutlookSpy 来获取日历的 EntryId 使用 Outlook 编程书中的示例
Private Sub GetAppointmentsForDate(dteDate As Date)
Dim objApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim colCal As Outlook.Items
Dim strFind As String
Dim colMyAppts As Outlook.Items
Dim objAppt As Outlook.AppointmentItem
Set objApp = CreateObject("Outlook.Application")
Set objNS = Application.GetNamespace("MAPI")
Set colCal = objNS.GetFolderFromID("{the Entry ID from OutlookSpy}").Items
colCal.Sort "[Start]"
colCal.IncludeRecurrences = True
Set colMyAppts = Nothing
strFind = "[Start] >= " & DoubleQuote(Format(dteDate, "dd mmm yyyy") & " 12:00 AM") & " AND [Start] < " & DoubleQuote(Format(dteDate + 1, "dd mmm yyyy") & " 12:00 AM")
Set colMyAppts = colCal.Restrict(strFind)
For Each objAppt In colMyAppts
Debug.Print objAppt.Start & vbTab & objAppt.Subject
Next
'clean up the objects used here
End Sub
我希望能够直接使用 MAPI 执行此操作 (CDO 1.21) 过滤有时最多需要 2 分钟,我希望将其缩短到几秒钟。
如果有人对示例代码有任何想法或改进,我将不胜感激。 [欢迎任何风格的 VB]
【问题讨论】:
-
你用的是什么版本的outlook和exchange?
标签: outlook