筛选自定义字段

您可以使用 Microsoft Jet 语法或 DAV 搜索和定位 (DASL) 语法在筛选器中指定自定义属性。 自定义属性必须在应用筛选器的文件夹中定义。 如果自定义属性仅在项目中定义,则搜索将失败。

Jet 查询

自定义属性的属性名可以包含空格。 与所有属性名引用一样,在 Jet 查询中,只需将自定义属性名括在方括号内即可。 例如,下列 Jet 查询检索名为"Preferred Gift"的自定义属性正好是"Diamonds"的所有联系人。 为了使查询成功进行,名为"Preferred Gift"的自定义属性已在包含自定义联系人项目的文件夹中进行定义:

criteria = "[Preferred Gift] = 'Diamonds'"

DASL 查询

在 DASL 查询中,如果自定义属性的名称包含空格,必须向每个空格字符应用统一资源定位符 (URL) 编码并将空格替换为"%20"。 通常,URL 编码会按照与 URL 相同的方式应用到 DASL 查询中的字符。

当建立自定义属性的 DASL 查询时,必须以下列格式使用 Outlook 自定义属性的命名空间 GUID:

https://schemas.microsoft.com/mapi/string/{GUID}/PropertyName

其中 {GUID} 是下列 GUID:

{00020329-0000-0000-C000-000000000046}

筛选通过 MAPI 字符串命名空间引用的自定义属性

如果要进行筛选的自定义属性在文件夹的 UserDefinedProperties 集合中不存在,并且您要通过 MAPI 字符串命名空间引用该自定义属性,则必须将一个类型说明符显式追加到该自定义属性的命名空间表示。 请注意,只有在将 DASL 筛选器应用于 Items 集合和 Table 对象中的搜索和筛选入口点时,以及将该筛选器应用于 Application.AdvancedSearch 方法时,才需要指定类型。

注意 六边形类型说明符的格式必须为 0000HHHH,只有 8 位数字,而不是 9 位。 有关适用于各种 MAPI 类型的六边形类型说明符 (HHHH) 的详细信息,请参阅 属性类型

例如,如果要使用 Items.Restrict 搜索名为"MyProperty"的自定义 Unicode 字符串属性,但此属性在文件夹的 UserDefinedProperties 集合中不存在,则必须将 Unicode 字符串类型说明符 0000001f 追加到 MAPI 字符串命名空间中的属性表示:

criteria = "@SQL=" & Chr$(34) & "https://schemas.microsoft.com/mapi/string/" _ 
& "{00020329-0000-0000-C000-000000000046}/MyProperty"_ 
& "/0000001f" & Chr(34) & " = '12-74440'" 

支持和反馈

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