2016-11-04 4 views
0

Я использую Matlab для получения встреч календаря из группы общих календарей Outlook. Мне нужно включать как повторяющиеся, так и разовые встречи в течение определенного диапазона дат. Этот код работает:Извлечение элементов календаря Outlook с использованием Matlab

outlook = actxserver('Outlook.Application'); 
    mapi = outlook.GetNamespace('mapi'); 
    explorer = mapi.GetDefaultFolder(9).GetExplorer; 
    NavModule = explorer.NavigationPane.Modules.GetNavigationModule(1); 
    NavGroup = NavModule.NavigationGroups.GetDefaultNavigationGroup(2); 

    filter = {['[Start] >= ''',strDATstart,''' AND [Start] <= ''', strDATend, '''']}; 

    for i=1:NavGroup.NavigationFolders.Count 
     NavFolder = NavGroup.NavigationFolders.Item(i); 
     LST = NavFolder.Folder.Items; 
     LST.IncludeRecurrences = -1; 
     LST.Sort('[Start]'); 
     LST.Restrict(filter{1}); 
     etc. 

Я ожидал, что метод Ограничить для удаления элементов из списка, которые были вне диапазона дат, установленного фильтра (strDATstart и strDATend установлены в другом месте в коде). Однако метод Restrict не работает как ожидаемый, а LST возвращает 2147483647 элементов (я не думаю, что это законно, а скорее представляет собой какое-то условие переполнения). Большинство возвращенных элементов пусты, но общий размер списка делает мой код непомерно медленным.

Я был бы признателен за любые рекомендации относительно того, как лучше получать или фильтровать эти встречи в пределах диапазона дат.

+0

Нет, обязательно не размер списка. Это -1 в гекса 7FFFFFFF –

ответ

0

Items.Restrict - это функция, которая возвращает новую (ограниченную) коллекцию. Вам нужно использовать возвращенный объект.

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