PropertyAccessor.GetProperties 方法 (Outlook)
获取由一维数组 SchemaNames 指定的属性的值。
语法
expression。 GetProperties
( _SchemaNames_
)
表达 一个代表 PropertyAccessor 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
SchemaNames | 必需 | Variant | 一个包含要返回其值的属性的名称的数组。 这些属性通过命名空间引用。 有关详细信息,请参阅通过命名空间引用属性。 |
返回值
一个变量,代表由在参数 SchemaNames 中指定的属性的值组成的数组。 所返回数组中的元素数等于 SchemaNames 数组中的元素数。 如果在获取特定属性时发生错误,则将在所返回数组的对应位置中返回 Err 值。
备注
GetProperties 返回的数组可以包含不同类型的元素,具体取决于请求的属性类型。 由 GetProperties 返回的数组元素的类型将与基础属性的类型相同。 PT_OBJECT 如某些原始属性类型不受支持,会引发错误。 如果需要原始属性类型转换(例如,从 PT_BINARY 转换为字符串,或从 PT_SYSTIME 转换为本地时间),请使用帮助程序方法 PropertyAccessor.BinaryToString 和 PropertyAccessor.UTCToLocalTime。
有关使用 PropertyAccessor 对象获取属性的详细信息,请参阅 获取和设置属性的最佳做法。
示例
下面的代码示例演示如何使用 PropertyAccessor 对象获取未在 Outlook 项目上公开的 MAPI 属性,即: PR_SUBJECT、 PR_ATTR_HIDDEN、 PR_ATTR_READONLY和 PR_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
另请参阅
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。