PropertyAccessor.GetProperties 方法 (Outlook)

获取由一维数组 SchemaNames 指定的属性的值。

语法

expressionGetProperties( _SchemaNames_ )

表达 一个代表 PropertyAccessor 对象的变量。

参数

名称 必需/可选 数据类型 说明
SchemaNames 必需 Variant 一个包含要返回其值的属性的名称的数组。 这些属性通过命名空间引用。 有关详细信息,请参阅通过命名空间引用属性

返回值

一个变量,代表由在参数 SchemaNames 中指定的属性的值组成的数组。 所返回数组中的元素数等于 SchemaNames 数组中的元素数。 如果在获取特定属性时发生错误,则将在所返回数组的对应位置中返回 Err 值。

备注

GetProperties 返回的数组可以包含不同类型的元素,具体取决于请求的属性类型。 由 GetProperties 返回的数组元素的类型将与基础属性的类型相同。 PT_OBJECT 如某些原始属性类型不受支持,会引发错误。 如果需要原始属性类型转换(例如,从 PT_BINARY 转换为字符串,或从 PT_SYSTIME 转换为本地时间),请使用帮助程序方法 PropertyAccessor.BinaryToStringPropertyAccessor.UTCToLocalTime

有关使用 PropertyAccessor 对象获取属性的详细信息,请参阅 获取和设置属性的最佳做法

示例

下面的代码示例演示如何使用 PropertyAccessor 对象获取未在 Outlook 项目上公开的 MAPI 属性,即: PR_SUBJECTPR_ATTR_HIDDENPR_ATTR_READONLYPR_ATTR_SYSTEM。 此代码示例使用 GetProperties 方法在一次调用中检索它们,指定对这些属性的命名空间引用数组,并获取包含每个属性的原始值的返回数组。

Sub DemoPropertyAccessorGetProperties() 
 
 Dim PropNames() As Variant 
 
 Dim myValues As Variant 
 
 Dim i As Integer 
 
 Dim j As Integer 
 
 Dim oMail As Object 
 
 Dim oPA As Outlook.PropertyAccessor 
 
 
 
 'Get first item in the inbox 
 
 Set oMail = _ 
 
 Application.Session.GetDefaultFolder(olFolderInbox).Items(1) 
 
 'PR_SUBJECT, PR_ATTR_HIDDEN, PR_ATTR_READONLY, PR_ATTR_SYSTEM 
 
 PropNames = _ 
 
 Array("http://schemas.microsoft.com/mapi/proptag/0x0037001E", _ 
 
 "http://schemas.microsoft.com/mapi/proptag/0x10F4000B", _ 
 
 "http://schemas.microsoft.com/mapi/proptag/0x10F6000B", _ 
 
 "http://schemas.microsoft.com/mapi/proptag/0x10F5000B") 
 
 'Obtain an instance of a PropertyAccessor object 
 
 Set oPA = oMail.PropertyAccessor 
 
 'Get myValues array with GetProperties call 
 
 myValues = oPA.GetProperties(PropNames) 
 
 For i = LBound(myValues) To UBound(myValues) 
 
 'Examine the type of the element 
 
 If IsError(myValues(i)) Then 
 
 'CVErr returns a variant of subtype error 
 
 Debug.Print (CVErr(myValues(i))) 
 
 ElseIf IsArray(myValues(i)) Then 
 
 propArray = myValues(i) 
 
 For j = LBound(propArray) To UBound(propArray) 
 
 Debug.Print (propArray(j)) 
 
 Next 
 
 ElseIf IsNull(myValues(i)) Then 
 
 Debug.Print ("Null value") 
 
 ElseIf IsEmpty(myValues(i)) Then 
 
 Debug.Print ("Empty value") 
 
 ElseIf IsDate(myValues(i)) Then 
 
 Debug.Print (oPA.UTCToLocalTime(myValues(i))) 
 
 'VB does not have IsBinary function 
 
 ElseIf VarType(myValues(i)) = vbByte Then 
 
 Debug.Print (oPA.BinaryToString(myValues(i))) 
 
 Else 
 
 Debug.Print (myValues(i)) 
 
 End If 
 
 Next 
 
End Sub

另请参阅

PropertyAccessor 对象

支持和反馈

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