Я пытаюсь создать макрос, который удалит все встречи из календаря Outlook с темой «Переместить в маркетинговую анкету». Я следовал этой инструкции от Microsoft docs , чтобы найти и перечислить все встречи, которые я ищу, но когда я go удаляю их, я знаю, что должен переключиться с For each
l oop до For
l oop и l oop в обратном направлении из-за способа индексации коллекций, в противном случае код пропускает некоторые встречи.
Когда я делаю это изменение, для l oop терпит неудачу, потому что индекс представляет собой целое число, а выходные данные Debug.print oItemsWithSubjectRange.Count (переполнены?) равны 2147483647. Есть ли другая команда для получения количества встреч, найденных с помощью двух фильтров, которые я применяется?
Я ожидаю, что этот макрос должен будет удалить до 50 встреч с абсолютным максимумом (обычно 10-20), поэтому целое число должно быть достаточным для моих нужд
Вот мой код - я включил оригинал For each
l oop внизу (с комментариями), который способен напечатать правильных встреч, которые я хочу удалить, бушель Когда я запускаю код, он пропускает некоторые встречи. For
l oop над ним вызывает Runtime error 6: Overflow
ошибки.
Sub deleteMoveToMarketing()
Dim myStart As Date
Dim myEnd As Date
Dim oCalendar As Outlook.Folder
Dim oItems As Outlook.Items
Dim oItemsWithDateRange As Outlook.Items
Dim oItemsWithSubjectRange As Outlook.Items
Dim oAppt As Outlook.AppointmentItem
Dim strRestriction As String
Dim i As Integer
myStart = Date - 30
myEnd = Date
Debug.Print "Start:", myStart
Debug.Print "End:", myEnd
'Construct filter for the next 30-day date range
strRestriction = "[Start] >= '" & _
Format$(myStart, "mm/dd/yyyy hh:mm AMPM") _
& "' AND [End] <= '" & _
Format$(myEnd, "mm/dd/yyyy hh:mm AMPM") & "'"
'Check the restriction string
Debug.Print strRestriction
Set oCalendar = Application.Session.GetDefaultFolder(olFolderCalendar)
Set oItems = oCalendar.Items
oItems.IncludeRecurrences = True
oItems.Sort "[Start]"
'Restrict the Items collection for the date range
Set oItemsWithDateRange = oItems.Restrict(strRestriction)
'Construct filter for the subject restriction
strRestriction = "[Subject] = 'Move to Marketing Questionnaire'"
'Check the restriction string
Debug.Print strRestriction
'Restrict the Items collection for the date range
Set oItemsWithSubjectRange = oItemsWithDateRange.Restrict(strRestriction)
'Construct filter for Subject containing 'team'
Debug.Print oItemsWithSubjectRange.Count
For i = oItemsWithSubjectRange.Count To 1 Step -1
Debug.Print oItemsWithSubjectRange(i).Start, oItemsWithSubjectRange(i).Subject
'oItemsWithSubjectRange(i).Delete
Next
'For Each oAppt In oItemsWithSubjectRange
'Debug.Print oAppt.Start, oAppt.Subject
'oAppt.Delete
'Next
End Sub