Итерация быстро через объекты назначения Outlook

Я записал макрос, который выполняет итерации через пользовательский календарь и делает модификации к записям что 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, кажется, блокирует до пользователя), там какой-либо способ, которым я могу ускорить это путем применения некоторого фильтра? Например, назначения, которые запускаются в будущем.

12
задан 0m3r 7 December 2016 в 22:48
поделиться

1 ответ

Вы можете использовать Ограничить для фильтрации. Обратите внимание, что даты представлены в формате месяц, день, год и фильтруются как строки, даже если хранятся как даты:

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

14
ответ дан 2 December 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: