使用 Table 对象执行枚举文件夹中筛选的项目

本主题中的代码示例使用 Table 对象枚举"收件箱"中的一组筛选项目,这些项目的上次修改时间是在 2005 年 5 月 1 日之后。 对于其中每个项目,该代码示例将显示以下值:主题、该项目的上次修改时间以及该项目是否为隐藏项。 此过程如下所示:

  1. 示例根据邮件项目的 LastModificationTime 属性值定义一个筛选器。

  2. 该示例将此筛选器应用到 Folder.GetTable 并得到一个满足筛选器的"收件箱"邮件项目子集的 Table

注意 返回的表包含每个筛选项的默认属性集: EntryIDSubjectCreationTimeLastModificationTimeMessageClass。 3.然后,它使用 Columns.RemoveAllColumns.Add 更新 ,其中包含实际所需的属性: SubjectLastModificationTime 和隐藏属性 (PidTagAttributeHidden) 。 如果属性 (存在,则指定具有显式内置名称的属性(例如 SubjectLastModificationTime) ),并且仅当它们不存在时,它才会通过命名空间 (引用属性,例如邮件项的隐藏属性) 。

注意步骤 2 和步骤 3 中的 Columns.Add 从 Folder.GetTable 返回Table 对象包含不同的属性值,但对于收件箱中的同一组筛选项。 4.最后,它使用 Table.GetNextRow 枚举筛选的项 (,直到 Table.EndOfTable) 变为 true,显示每个项的三个所需属性的值。

Sub DemoTable() 
 'Declarations 
 Dim Filter As String 
 Dim oRow As Outlook.Row 
 Dim oTable As Outlook.Table 
 Dim oFolder As Outlook.Folder 
 
 'Get a Folder object for the Inbox 
 Set oFolder = Application.Session.GetDefaultFolder(olFolderInbox) 
 
 'Define Filter to obtain items last modified after May 1, 2005 
 Filter = "[LastModificationTime] > '5/1/2005'" 
 'Restrict with Filter 
 Set oTable = oFolder.GetTable(Filter) 
 
 'Remove all columns in the default column set 
 oTable.Columns.RemoveAll 
 'Specify desired properties 
 With oTable.Columns 
 .Add ("Subject") 
 .Add ("LastModificationTime") 
 'PidTagAttributeHidden referenced by the MAPI proptag namespace 
 .Add ("https://schemas.microsoft.com/mapi/proptag/0x10F4000B") 
 End With 
 
 'Enumerate the table using test for EndOfTable 
 Do Until (oTable.EndOfTable) 
 Set oRow = oTable.GetNextRow() 
 Debug.Print (oRow("Subject")) 
 Debug.Print (oRow("LastModificationTime")) 
 Debug.Print (oRow("https://schemas.microsoft.com/mapi/proptag/0x10F4000B")) 
 Loop 
End Sub

支持和反馈

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