枚举、搜索和筛选文件夹中的项目

Outlook 对象模型提供了一些入口点,这些入口点支持枚举、搜索和筛选文件夹中的项目。

枚举项目

ItemsTableSelection 对象均支持枚举文件夹中的项目。 但在某些特定情况下,需要选择某个对象,而不选择其他对象。

通过调用 Folder.Items (它会返回文件夹中的项目)可获得 Items 集合。 集合中的每个项目对象都带有各自所有的显式内置属性和自定义属性,并支持读写操作。 Items 集合还支持某些筛选器和事件;在集合中添加、更改或删除项目时,会触发这些筛选器和事件。

使用 Folder.GetTableSearch.GetTable 获取一个 Table 对象,该对象代表文件夹或搜索文件夹中的一组项目。 在这两种情况下,都可以指定筛选器来获取文件夹中项目的子集;如果未指定任何筛选器,则获取文件夹中的所有项目。 默认情况下,返回的 Table 中的每个项目只包含其属性的一个默认子集。

可以将 Table 的每一行视为文件夹中的一个项目,将每一列视为项目的一个属性;并且, Table 是一个内存中的轻量型行集,该行集允许快速枚举和筛选文件夹中的项目。 虽然 Table 中的行会反映添加和删除基础文件夹的操作,但 Table 并不支持任何添加、更改和删除行的事件。

如果需要 Table 行中的可写对象,请从 Table 中的默认 EntryID 列中获得该行的 EntryID,然后使用 NameSpace 对象的 GetItemFromID 方法获得支持读写操作的完整项目,例如 MailItemContactItem 。 有关 Table 中默认列的详细信息,请参阅 表对象中显示的 efault 属性

Selection 对象支持枚举用户当前在浏览器中选择的项目。 由于浏览器可显示文件夹的内容,因此 Selection 对象支持按照用户的选择枚举文件夹中的项目。

注意 Outlook 中的文件夹可以包含异类项目。 例如,默认情况下,"联系人"文件夹支持创建联系人项目和通讯组列表项目的操作。 由于 ItemsTableSelection 对象将项目封装在文件夹或搜索文件夹中,因此其中的项目不一定具有相同的邮件类。 当枚举这些集合和对象中的项目时,最好在访问项目属性之前先检查每个项目的邮件类。

搜索和筛选项目

ItemsTableApplicationView 对象支持对文件夹中的项目进行搜索和筛选。 下表描述并比较了这些入口点:

入口点 操作 搜索筛选器的对象 Jet 筛选器支持 DASL 筛选器支持 注释
Application.AdvancedSearch 设置 Search 对象的条件并返回 Search 对象。 Search.Results 指定搜索结果。 Search.Save 使用搜索结果更新搜索文件夹。 Folder
Folder.GetTable 根据任何给定的筛选器返回项目的 Table Folder 某些属性在 Table 筛选器中不受支持,包括二进制属性和 HTML 或 RTF 正文内容。 有关详细信息,请参阅 Table 对象或 Table 筛选器中不受支持的属性
Items.Find 搜索第一个满足指定筛选器的项目。 Folder 该筛选器不支持其中一些属性,包括 Body。 有关详细信息,请参阅 Items.Find
Items.Restrict 根据指定的限制筛选给定的项目集并返回另一个 Items 集合。 Folder 该筛选器不支持其中一些属性,例如 Body。 有关详细信息,请参阅 Items.Restrict
Search.GetTable 根据源自 Application.AdvancedSearch 的任何筛选器,在搜索文件夹中返回项目的 Table 搜索文件夹 Search.GetTableSearch 对象派生其筛选器 (特别是从 Application.AdvancedSearch 返回的 Search.Filter 属性) 。
Table.Restrict 根据指定的筛选器筛选给定表格中的行并返回另一个 Table 对象。 Folder 某些属性在 Table 筛选器中不受支持,包括二进制属性和 HTML 或 RTF 正文内容。 有关详细信息,请参阅 Table 对象或 Table 筛选器中不受支持的属性
View.Filter 设置视图的筛选器,不更改视图的 XML。 为视图设置筛选器只会更改用户界面中的视图,不会导致筛选 集合。 Folder
View.XML 获取或设置视图的 XML。 修改“ <筛选器”> 节点会更改视图的筛选器。 为视图设置 XML 只会更改用户界面中的视图,不会导致筛选 集合。 Folder 视图 XML 将被弃用。 请使用 View 对象模型编写视图程序。

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。