Получение и перечисление выделенных бесед
По умолчанию Microsoft Outlook отображает элементы в папке "Входящие" по беседе. Если пользователь выбирает элемент в папке "Входящие", можно получить этот выбор программным образом, включая заголовки и элементы бесед. В примере кода в данном разделе показывается, как получить выбранный в папке "Входящие" элемент и как перечислить почтовые элементы для каждой из выбранных бесед.
В примере содержится один метод , DemoConversationHeadersFromSelection
. Метод задает текущее представление в папку "Входящие", а затем проверяет, является ли текущее представление табличным представлением, в котором отображаются беседы, отсортированные по дате. Чтобы получить выделение, включая все выбранные объекты ConversationHeader , DemoConversationHeadersFromSelection
использует метод GetSelection объекта Selection , указывая константу OlSelectionContents.olConversationHeaders в качестве аргумента. Если выбраны заголовки диалога, DemoConversationHeadersFromSelection
использует объект SimpleItems для перечисления элементов в каждой выбранной беседе, а затем отображает тему этих элементов диалога, которые являются объектами MailItem .
Следующий пример управляемого кода написан на 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
. Дополнительные сведения об использовании Outlook PIA для разработки управляемых решений Outlook см. в статье Справочник по основной сборке взаимодействия Outlook на веб-сайте MSDN.
private void DemoConversationHeadersFromSelection()
{
// Obtain Inbox.
Outlook.Folder inbox =
Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderInbox)
as Outlook.Folder;
// Set ActiveExplorer.CurrentFolder to Inbox.
// Inbox must be current folder.
Application.ActiveExplorer().CurrentFolder = inbox;
// Ensure that the current view is a table view.
if (inbox.CurrentView.ViewType ==
Outlook.OlViewType.olTableView)
{
Outlook.TableView view =
inbox.CurrentView as Outlook.TableView;
// And check if the table view organizes conversations by date.
if (view.ShowConversationByDate == true)
{
Outlook.Selection selection =
Application.ActiveExplorer().Selection;
Debug.WriteLine("Selection.Count = " + selection.Count);
// Call GetSelection to create a Selection object
// that includes any selected conversation header objects.
Outlook.Selection convHeaders =
selection.GetSelection(
Outlook.OlSelectionContents.olConversationHeaders)
as Outlook.Selection;
Debug.WriteLine("Selection.Count (ConversationHeaders) = "
+ convHeaders.Count);
// Check if any conversation headers are selected.
if (convHeaders.Count >= 1)
{
foreach (Outlook.ConversationHeader convHeader in convHeaders)
{
// Enumerate the items in each conversation header object.
Outlook.SimpleItems items = convHeader.GetItems();
for (int i = 1; i <= items.Count; i++)
{
// Only enumerate MailItems in this example.
if (items[i] is Outlook.MailItem)
{
Outlook.MailItem mail =
items[i] as Outlook.MailItem;
Debug.WriteLine(mail.Subject
+ " Received:" + mail.ReceivedTime);
}
}
}
}
}
}
}
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.