Поиск и получение элементов в агрегированном представлении (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 и обратная связь.