获取并枚举选定对话
默认情况下,Microsoft Outlook 按对话显示收件箱中的项目。 如果用户在收件箱中进行选择,您可以通过编程方式获取此选择内容,包括会话标题和会话项。 此主题中的代码示例演示如何在收件箱中获取选择内容,以及如何枚举选择内容中每个会话中的邮件项。
该示例包含一个方法 DemoConversationHeadersFromSelection
。 方法将当前视图设置为“收件箱”,然后检查当前视图是否为显示按日期排序的对话的表视图。 若要获取所选内容(包括任何选定的 ConversationHeader 对象),DemoConversationHeadersFromSelection
请使用 Selection 对象的 GetSelection 方法,并将 OlSelectionContents.olConversationHeaders 常量指定为参数。 如果选择了会话标头, DemoConversationHeadersFromSelection
则使用 SimpleItems 对象枚举每个选定会话中的项目,然后显示这些会话项目的主题,这些会话项目是 MailItem 对象。
下面的托管代码是使用 C# 编写的。 若要运行需要调入组件对象模型 (COM) 的 .NET Framework 托管代码示例,您必须使用可定义托管接口并将其映射到对象模型类型库中的 COM 对象的互操作程序集。 对于 Outlook,您可以使用 Visual Studio 和 Outlook 主互操作程序集 (PIA)。 在您运行适用于 Outlook 2013 的托管代码示例之前,请确保您已安装了 Outlook 2013 PIA 并且已添加了对 Visual Studio 中的 Microsoft Outlook 15.0 对象库组件的引用。 应使用 Office Developer Tools for Visual Studio) 在 Outlook 外接程序 (类中使用以下代码 ThisAddIn
。 代码中的 应用程序对象必须是由 提供的受信任 Outlook ThisAddIn.Globals
对象。 有关使用 Outlook PIA 开发托管 Outlook 解决方案的详细信息,请参阅欢迎使用 MSDN 上的 Outlook 主互操作程序集参考 。
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 支持和反馈,获取有关如何接收支持和提供反馈的指南。