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