Поделиться через


Поиск и получение элементов в агрегированном представлении (Outlook)

Метод GetTable объекта TableView может возвращать объект Table , содержащий элементы из одной или нескольких папок в одном хранилище или охватывающий несколько хранилищ в агрегированном представлении. Это особенно полезно, если вы хотите получить доступ к элементам, возвращенным из поиска; например, поиск по всем почтовым элементам в магазине. В данном разделе показан пример использования функции Мгновенный поиск для поиска всех элементов, полученных от руководителя текущего пользователя и помеченных как важные, и последующего отображения темы каждого результата поиска.

Следующий пример кода содержит GetItemsInView метод . GetItemsInViewСначала выполняет несколько проверок, чтобы узнать, использует ли текущий пользователь сеанса Outlook Microsoft Exchange Server, имеет ли текущий пользователь диспетчер и работает ли мгновенный поиск в хранилище сеанса по умолчанию.

Поскольку в конечном итоге поиск зависит от метода Search объекта Explorer , а для отображения результата используется метод GetTable , основанный на текущем представлении текущей папки активного обозревателя, GetItemsInView создает обозреватель, отображает папку "Входящие" в этом обозревателе и настраивает поиск с помощью этого объекта explorer . GetItemsInView указывает критерии поиска в качестве важных элементов из диспетчера текущего пользователя и область поиска в качестве всех папок типа элемента MailItem .

После GetItemsInView вызова метода Explorer.Search в этом обозревателе отображаются все результаты поиска, включая элементы из других папок и хранилищ, соответствующих условиям поиска. GetItemsInView получает объект TableView , содержащий это представление обозревателя результатов поиска. С помощью метода GetTable этого объекта TableView получает объект Table, GetItemsInView содержащий агрегированные элементы, возвращенные из поиска. Наконец GetItemsInView , отображается столбец темы каждой строки объекта Table , представляющего элемент в результатах поиска.

Следующий пример управляемого кода написан на C#. Для запуска примера управляемого кода для .NET Framework, который вызывает модель COM, необходимо использовать сборку взаимодействия, которая определяет и сопоставляет управляемые интерфейсы с объектами COM в библиотеке типов объектной модели. Для Outlook можно использовать Visual Studio и первичную сборку взаимодействия Outlook (PIA). Перед запуском примеров управляемого кода для Outlook 2013 убедитесь, что вы установили Outlook 2013 PIA и добавили ссылку на компонент Microsoft Outlook 15.0 Object Library в Visual Studio.

Используйте следующий код в ThisAddIn классе надстройки Outlook (с помощью средств разработчика Office для Visual Studio). Объект Application в коде должен быть доверенным объектом Application Outlook, предоставленным объектом ThisAddIn.Globals. Дополнительные сведения об использовании PIA Outlook для разработки управляемых решений Outlook см. в справочнике по сборке основного взаимодействия Outlook.

private void GetItemsInView() 
{ 
    Outlook.AddressEntry currentUser = 
        Application.Session.CurrentUser.AddressEntry; 
 
    // Check if the current user uses the Exchange Server. 
    if (currentUser.Type == "EX") 
    { 
        Outlook.ExchangeUser manager = 
            currentUser.GetExchangeUser().GetExchangeUserManager(); 
 
        // Check if the current user has a manager. 
        if (manager != null) 
        { 
            string managerName = manager.Name; 
 
            // Check if Instant Search is enabled and operational in the default store. 
            if (Application.Session.DefaultStore.IsInstantSearchEnabled) 
            { 
                Outlook.Folder inbox = 
                    Application.Session.GetDefaultFolder( 
                    Outlook.OlDefaultFolders.olFolderInbox); 
 
                // Create a new explorer to display the Inbox as 
                // the current folder. 
                Outlook.Explorer explorer = 
                    Application.Explorers.Add(inbox, 
                    Outlook.OlFolderDisplayMode.olFolderDisplayNormal); 
 
                // Make the new explorer visible. 
                explorer.Display; 
 
                // Search for items from the manager marked important,
                // from all folders of the same item type as the current folder,
                // which is the MailItem item type. 
                string searchFor = 
                    "from:" + "\"" + managerName  
                    + "\"" + " importance:high"; 
                explorer.Search(searchFor, 
                    Outlook.OlSearchScope.olSearchScopeAllFolders); 
 
                // Any search results are displayed in that new explorer 
                // in an aggregated table view. 
                Outlook.TableView tableView =  
                    explorer.CurrentView as Outlook.TableView; 
 
                // Use GetTable of that table view to obtain items in that 
                // aggregated view in a Table object. 
                Outlook.Table table = tableView.GetTable(); 
                while (!table.EndOfTable) 
                { 
                    // Then display each row in the Table object 
                    // that represents an item in the search results. 
                    Outlook.Row nextRow = table.GetNextRow(); 
                    Debug.WriteLine(nextRow["Subject"]); 
                } 
            } 
        } 
    } 
} 

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.