Я записал макрос, который выполняет итерации через пользовательский календарь и делает модификации к записям что fufil определенный critera.
Проблема состоит в том, что, когда календарь является очень большим, это занимает много времени, чтобы сделать. Я, кажется, не могу отфильтровать назначения потому что oAppointmentItems
кажется, хранит записи, поскольку они были созданы - который является не обязательно тем же порядком как тогда, когда они запускают.
Код, который я использую, является этим:
Dim oOL As New Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oAppointments As Object
Dim oAppointmentItem As Outlook.AppointmentItem
Set oNS = oOL.GetNamespace("MAPI")
Set oAppointments = oNS.GetDefaultFolder(olFolderCalendar)
For Each oAppointmentItem In oAppointments.Items
DoEvents
' Something here
Next
Set oAppointmentItem = Nothing
Set oAppointments = Nothing
Set oNS = Nothing
Set oOL = Nothing
За исключением удаления DoEvents
(который только означает, что Outlook, кажется, блокирует до пользователя), там какой-либо способ, которым я могу ускорить это путем применения некоторого фильтра? Например, назначения, которые запускаются в будущем.
Вы можете использовать Ограничить для фильтрации. Обратите внимание, что даты представлены в формате месяц, день, год и фильтруются как строки, даже если хранятся как даты:
Set olApp = CreateObject("Outlook.Application")
Set olNS = olApp.GetNamespace("MAPI")
Set olRecItems = olNS.GetDefaultFolder(olFolderTasks)
strFilter = "[DueDate] > '1/15/2009'"
Set olFilterRecItems = olRecItems.Items.Restrict(strFilter)
For i = 1 To olFilterRecItems.Count
<...>
Дополнительная информация: http://msdn.microsoft.com/en-us/library /bb220369.aspx[1260 impression