使用 Table 对象执行枚举文件夹中筛选的项目
本主题中的代码示例使用 Table 对象枚举"收件箱"中的一组筛选项目,这些项目的上次修改时间是在 2005 年 5 月 1 日之后。 对于其中每个项目,该代码示例将显示以下值:主题、该项目的上次修改时间以及该项目是否为隐藏项。 此过程如下所示:
示例根据邮件项目的 LastModificationTime 属性值定义一个筛选器。
该示例将此筛选器应用到 Folder.GetTable 并得到一个满足筛选器的"收件箱"邮件项目子集的 Table 。
注意 返回的表包含每个筛选项的默认属性集: EntryID、 Subject、 CreationTime、 LastModificationTime 和 MessageClass。 3.然后,它使用 Columns.RemoveAll 和 Columns.Add 更新 表 ,其中包含实际所需的属性: Subject、 LastModificationTime 和隐藏属性 (PidTagAttributeHidden) 。 如果属性 (存在,则指定具有显式内置名称的属性(例如 Subject、 LastModificationTime) ),并且仅当它们不存在时,它才会通过命名空间 (引用属性,例如邮件项的隐藏属性) 。
注意步骤 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。