在 Outlook) (聚合视图中搜索和获取项目
TableView 对象的 GetTable 方法可以返回一个 Table 对象,该对象包含同一存储区中的一个或多个文件夹中的项目,或者跨多个存储区,在聚合视图中。 这在您希望访问从搜索(例如,搜索某个存储中的所有邮件项目)返回的项目时尤其有用。 本主题用一个示例来演示如何使用“即时搜索”搜索从当前用户的经理接收的标记为重要的所有项目,并显示每个搜索结果的主题。
下面的代码示例包含 GetItemsInView
方法。 GetItemsInView
首先进行一些检查,查看 Outlook 会话的当前用户是否使用Microsoft Exchange Server、当前用户是否有经理,以及即时搜索是否在会话的默认存储中正常运行。
因为最终搜索依赖于 Explorer 对象的 Search 方法,并且最终结果显示使用 GetTable 方法,该方法基于活动资源管理器当前文件夹的当前视图,GetItemsInView
创建一个资源管理器,显示此资源管理器中的收件箱,并使用此 Explorer 对象设置搜索。 GetItemsInView
将搜索条件指定为当前用户的经理中的重要项目,并将搜索范围指定为 MailItem 项目类型的所有文件夹。
调用 Explorer.Search 方法后GetItemsInView
,任何搜索结果都将显示在此资源管理器中,包括来自其他文件夹和满足搜索条件的存储区的项目。 GetItemsInView
获取一个 TableView 对象,该对象包含搜索结果的此资源管理器视图。 通过使用此 TableView 对象的 GetTable 方法,GetItemsInView
然后获取一个 Table 对象,该对象包含从搜索返回的聚合项。 最后, GetItemsInView
显示 Table 对象的每一行的主题列,该行代表搜索结果中的一个项目。
下面的托管代码是使用 C# 编写的。 若要运行需要调入组件对象模型 (COM) 的 .NET Framework 托管代码示例,您必须使用可定义托管接口并将其映射到对象模型类型库中的 COM 对象的互操作程序集。 对于 Outlook,您可以使用 Visual Studio 和 Outlook 主互操作程序集 (PIA)。 在您运行适用于 Outlook 2013 的托管代码示例之前,请确保您已安装了 Outlook 2013 PIA 并且已添加了对 Visual Studio 中的 Microsoft Outlook 15.0 对象库组件的引用。
使用适用于 Visual Studio) 的 Office 开发人员工具 (Outlook 外接程序类中的以下代码 ThisAddIn
。 代码中的 应用程序对象必须是由 提供的受信任 Outlook ThisAddIn.Globals
对象。 有关使用 Outlook PIA 开发托管 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。