我有一个与 Outlook 交互的 Access 数据库,捕获所选电子邮件的 EntryID(存储在 Access 的表中)。
我有代码可以使用 Outlook 的
GetItemFromID
方法按 EntryID 查看任何一封电子邮件。
我现在希望过滤 Outlook 主窗口,以根据保存的 EntryID 列表显示电子邮件。
为了澄清,如果我有一个包含三封电子邮件(及其各自的 EntryID)的列表,则 Outlook 主窗口将被过滤以显示这三封电子邮件。类似于搜索,但基于 EntryID。
有没有办法通过 VBA 添加搜索过滤器,根据 EntryID 进行搜索?
EntryID
等二进制属性不能用于 Outlook 中的任何搜索或筛选操作。您需要使用任何其他属性(自定义或用户定义的属性)来过滤 Outlook 中的项目。
View.Filter 属性值是一个字符串,采用 DAV 搜索和定位 (DASL) 语法,表示视图的当前过滤器。有关使用 DASL 语法过滤视图中的项目的更多信息,请参阅过滤项目。
Private Sub FilterViewToLastWeek()
Dim objView As View
' Obtain a View object reference to the current view.
Set objView = Application.ActiveExplorer.CurrentView
' Set a DASL filter string, using a DASL macro, to show
' only those items that were received last week.
objView.Filter = "%lastweek(""urn:schemas:httpmail:datereceived"")%"
' Save and apply the view.
objView.Save
objView.Apply
End Sub
请注意,当项目在商店或文件夹之间移动时,EntryID
值可能会更改。此外,该值仅在每个商店都是唯一的。如果您需要显示某些具有特定 EntryID 字符串的项目,您可以使用
GetItemFromID 方法获取这些项目实例,然后使用特定的用户属性标记它们,以便能够为其应用过滤器。或者只需将另一个字符串字段添加到数据库中,并使用自定义值,该值可以添加到 Outlook 中的项目中,这样您就可以轻松地在 UI 中应用过滤器。