2015-05-22 6 views
0

Продолжение с другого вопроса: VBA: Прочитать календарь прогноза - не читать повторяющиеся встречи?VBA: Календарь Outlook - опустить одно (удаленное) повторяющееся событие

В календаре Outlook я читаю/разбираю/сортирующую рабочую неделю, чтобы создать сводку. У меня была предыдущая проблема, когда повторяющиеся встречи не читались - теперь отсортированы.

Теперь - если в течение рабочей недели я удаляю повторяющееся событие, скажем, из-за праздника, оно все еще отображается в моем резюме. Я не могу определить какие-либо параметры в объекте, чтобы проверить, удалено ли с этой недели. Рекомендации?

Set olApp = CreateObject("Outlook.Application") 
Set olNS = olApp.GetNamespace("MAPI") 
Set olFolder = olNS.GetDefaultFolder(olFolderCalendar) 
Set olColItems = olFolder.Items 

sFilter = "[START] >= '" & sDateStart & "' And [End] <= '" & sDateEnd & "'" 
Set olColFilteredItems = olColItems.Restrict(sFilter) 

For Each oItem In olColFilteredItems 
    aImport(iCount, 1) = oItem.Subject 
    aImport(iCount, 2) = oItem.Start 
    aImport(iCount, 3) = oItem.End 
    aImport(iCount, 4) = oItem.Location 
Next oItem  

С наилучшими пожеланиями, Max

+0

Какой код вы используете? Как удалить пункт назначения? –

+0

Извинения - плохое объяснение. Я обновил исходное сообщение. Повторяющееся событие удаляется из календаря Outlook. Таким образом, его заметно удалили с рабочей недели. Мое чтение рабочей недели по-прежнему фиксирует удаленное событие, поскольку оно все еще повторяется. Cheers, –

ответ

1

Вы должны установить IncludeRecurrences property. Вместо использования свойства Ограничить, Сортировка по началу и установите для свойства IncludeRecurrences значение true.

+0

Я в замешательстве. Мои повторяющиеся встречи выглядят очень хорошо с помощью вышеупомянутого метода. Использует ли свойство IncludeRecurrences другой способ проверки, была ли удалена запись из календаря? IE: Повторяющаяся встреча существует, я удаляю ее из своего календаря на этой неделе, когда я пропустил встречи (на следующей неделе я приеду), но код по-прежнему считает повторяющуюся встречу присутствующей на этой неделе. –

+0

Давайте вернемся к терминологии. Во-первых, экземпляры повторения физически не существуют (подумайте о встрече без даты окончания), если вы не измените экземпляр; в этот момент создается исключение - оно хранится как приложение на главной встрече. Если вы удаляете экземпляр повторения, кадр повторения, сохраненный на главной встрече, изменяется для записи, что в шаблоне повторения есть отверстие. Если сортировка коллекции и установка IncludeRecurrences в true, OOM расширяет шаблон повторения и создает поддельные объекты AppointmentItem которые физически не существуют. –

0

Дмитрий прав, чтобы получить все пункты назначения Outlook из папки, которая соответствует предопределенному условию, вам необходимо указать sort элементы в порядке возрастания и установить для IncludeRecurrences значение true. Вы не будете ловить повторные встречи, если вы этого не сделаете, прежде чем использовать метод Ограничения!

См. How To: Use Restrict method in Outlook to get calendar items для получения дополнительной информации (пример кода включен).

+0

Hah. Спасибо. Я перечитываю комментарий Дмитрия примерно в 10 раз, пока мой мозг не включил. Это все, что нужно: –

0

Hah. Спасибо. Я перечитал комментарий Дмитрия около 10 раз, прежде чем туман расступился. Сказанное выше действительно помогло. Это все, что нужно:

Set olApp = CreateObject("Outlook.Application") 
Set olNS = olApp.GetNamespace("MAPI") 
Set olFolder = olNS.GetDefaultFolder(olFolderCalendar) 
Set olColItems = olFolder.Items 

olColItems.IncludeRecurrences = True '<-- these two lines here fix my issue 
olColItems.Sort ("[Start]")    '<-- 

sFilter = "[START] >= '" & sDateStart & "' And [End] <= '" & sDateEnd & "'" 
Set olColFilteredItems = olColItems.Restrict(sFilter) 

For Each oItem In olColFilteredItems 
    aImport(iCount, 1) = oItem.Subject 
    aImport(iCount, 2) = oItem.Start 
    aImport(iCount, 3) = oItem.End 
    aImport(iCount, 4) = oItem.Location 
Next oItem 

 Смежные вопросы

  • Нет связанных вопросов^_^