Table 对象或 Table 筛选器中不受支持的属性
本主题列出了无法添加到 Table 或无法在 Table 筛选器中使用的属性。 这些属性不能通过 Columns.Add 添加,也不能在下列方法所使用的筛选器中指定这些属性:
Search.GetTable (请注意,筛选器派生自 Application.AdvancedSearch) 返回的 Search 对象
Properties | Table 对象 | Table 筛选器 | 注释 |
---|---|---|---|
二进制属性 | 支持 | 不支持 | 如果通过引用命名空间的方式将二进制属性添加到 Table 中,则该属性在 Table 中的值为二进制值。 使用 Row.BinaryToString 将值转换为字符串。 |
正文属性,包括 Body、 HTMLBody、 https://schemas.microsoft.com/mapi/proptag/0x10130102 pidTagHtml) 的 (, https://schemas.microsoft.com/mapi/proptag/0x10090102 PidTagRtfCompressed) 的 ( |
可支持 Body,但只能在 Table 中存储该值的前 255 个字节。 不支持代表 HTML 或 RTF 正文内容的其他属性。 由于只有前 255 字节的 Body 存储在表中,因此如果要获取文本或 HTML 形式的项目的完整正文内容,请使用 GetItemFromID 中的项的 EntryID 获取项对象。 然后,在整个项目对象中检索 Body 的完整值。 |
筛选器只支持以文本形式表示的 Body 属性。 这意味着属性必须在 DASL 筛选器中引用为 urn:schemas:httpmail:textdescription,并且不能筛选正文中的任何 HTML 标记。 为了提高性能,请在筛选器中使用内容索引器关键字来匹配正文中的字符串。 | |
计算属性,如 AutoResolvedWinner 和 BodyFormat。 请参阅以下计算属性的完整列表。 | 不支持 | 不支持 | 要获取 Table 中某个项目的计算属性值,需在 GetItemFromID 中使用该项目的 EntryID 来获取项目对象。 然后通过 item 对象检索属性值。 |
多值属性,例如 Categories、 Children、 Companies 和 VotingOptions | 支持 | 虽然 Jet 和 DASL 筛选器都支持多值属性,但在 DASL 筛选器中使用内容索引可提高筛选效率。 有关详细信息,请参阅使用与 Keywords 属性的比较筛选项目。 | Table 中多值属性值的格式取决于该属性在添加时是使用显式内置名称,还是使用引用命名空间的名称。 如果属性是使用显式内置名称添加的,则 Table 中的值为逗号分隔的字符串。 否则,其值为变量数组。 有关详细信息,请参阅操作方法:访问 Table 中多值属性的值。 |
返回值是对象的属性,如 Attachments、Parent、Recipients、RecurrencePattern 和 UserProperties。 | 如果属性按其显式内置名称引用,则不支持;如果属性按其命名空间引用,则支持。 | 如果属性表示为 Jet 查询,则不支持;如果属性表示为 DASL 查询,则支持。 |
不支持的计算属性
如果尝试使用 Columns.Add 添加下面列出的计算属性之一,则通过显式属性名称或命名空间引用该属性时,将收到错误 ,IDS_ERR_BLOCKED_PROPERTY。 要确定这些属性的值,请使用"条目 ID"获取项目对象,然后使用项目对象来确定属性值(如 object.property
中所示):
AutoResolvedWinner
BodyFormat
Class
ContactNames
Companies
DownloadState
FlagIcon
HtmlBody
InternetCodePage
IsConflict
IsMarkedAsTask
MeetingWorkspaceURL
MemberCount
Saved
Sent
Submitted
TaskSubject
Unread
如果尝试使用 Jet 筛选器中下面列出的计算属性之一, (通过 Table.Restrict 的显式属性名称引用属性) ,则会收到错误 ,IDS_ERR_ES_INVALIDRESTRICTION:
AutoResolvedWinner
Body
BodyFormat
Class
ContactNames
Companies
ContactNames
ConversationIndex
DownloadState
EntryID
HtmlBody
InternetCodePage
IsConflict
IsMarkedAsTask
MeetingWorkspaceURL
MemberCount
NetMeetingServer
ReplyRecipients
Saved
Sent
Submitted
TaskSubject
注意对于 TaskSubject 或 IsMarkedAsTask 等计算属性,如果引用具有显式属性名称的属性,则不能使用 Columns.Add 将其添加到 Table.Add 或使用 Table.Restrict 对其进行筛选。 但是,如果通过命名空间引用属性,则可添加或筛选属性,如 Visual Basic for Applications 中的以下代码示例所示:
Sub TableForIsMarkedAsTask()
Dim oT As Outlook.Table
Dim oRow As Outlook.Row
Dim filter As String
'0x0E2B0003 represents IsMarkedAsTask
filter = "@SQL=" & Chr(34) _
& "https://schemas.microsoft.com/mapi/proptag/0x0E2B0003" & Chr(34) & " = 1"
'Table only contains rows for items where IsMarkedAsTask is True
Set oT = Application.Session.GetDefaultFolder(olFolderInbox).GetTable(filter)
oT.Columns.Add ("TaskStartDate")
oT.Columns.Add ("TaskDueDate")
oT.Columns.Add ("TaskCompletedDate")
'Use GUID/ID to represent TaskSubject
oT.Columns.Add ( _
"https://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/85A4001E")
Do Until oT.EndOfTable
Set oRow = oT.GetNextRow
Debug.Print oRow( _
"https://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/85A4001E"), _
oRow("TaskStartDate"), oRow("TaskDueDate"), oRow("TaskCompletedDate")
Loop
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈