PropertyAccessor.SetProperty 方法 (Outlook)

将由 SchemaName 指定的属性设置为由 Value 指定的值。

语法

expressionSetProperty( _SchemaName_ , _Value_ )

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

参数

名称 必需/可选 数据类型 说明
SchemaName 必需 字符串 要根据 Value 参数指定的值设置其值的属性的名称。 该属性通过命名空间引用。 有关详细信息,请参阅通过命名空间引用属性
必需 Variant 要为 SchemaName 参数指定的属性设置的值。

备注

如果属性不存在,而且 SchemaName 包含有效的属性说明符,则 SetProperty 将创建该属性,并分配由 Value 指定的值。 如果属性存在,而且 SchemaName 是有效的,则 SetProperty 将为该属性分配由 Value 指定的值。

请注意,使用 PropertyAccessor 创建的自定义属性在自定义视图中不受支持。 如果想查看某个项目的自定义属性,可使用 UserProperties 对象的 Add 方法创建该属性。

如果父对象的 PropertyAccessor 支持显式 保存 操作,则属性应保存对该对象具有显式 保存 方法调用。 如果该对象不支持显式 Save 操作,则属性保存到该对象在调用 SetProperties 时。

处理异常时要多加小心,并确保所有异常都已正确处理。 设置属性失败的情况包括:

  • 属性是只读的,因为一些 Outlook 和 MAPI 属性是只读的。

  • 找不到通过指定命名空间引用的属性。

  • 属性是以无效格式指定的,无法进行分析。

  • 属性不存在且无法创建。

  • 属性存在,但传递给它的值类型不正确。

  • 由于客户端脱机,无法打开属性。

  • 属性是使用 UserProperties.Add 方法创建的。 首次设置属性时,必须使用 UserProperty.Value 属性,而不是 PropertyAccessor 对象的 SetPropertiesSetProperty 方法。

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

示例

下面的代码示例演示如何使用 PropertyAccessor 的值 MailItem对象上设置的自定义属性。 如果不存在自定义属性, PropertyAccessor.SetProperty 将创建,然后设置属性。 使用 MailItem.Save 方法保存属性。

Sub DemoPropertyAccessorSetProperty() 
 Dim myProp As String 
 Dim myValue As Variant 
 Dim oMail As Outlook.MailItem 
 Dim oPA As Outlook.PropertyAccessor 
 'Get first item in the inbox 
 Set oMail = _ 
 Application.Session.GetDefaultFolder(olFolderInbox).Items(1) 
 'Name for custom property using the MAPI string namespace 
 myProp = "http://schemas.microsoft.com/mapi/string/" & _ 
 "{FFF40745-D92F-4C11-9E14-92701F001EB3}/myCustomer" 
 myValue = "Dan Wilson" 
 'Set value with SetProperty call 
 'If the property does not exist, then SetProperty 
 'adds the property to the object when saved. 
 'The type of the property is the type of the element 
 'passed in myValue. 
 On Error GoTo ErrTrap 
 Set oPA = oMail.PropertyAccessor 
 oPA.SetProperty myProp, myValue 
 
 'Save the item 
 oMail.Save 
 Exit Sub 
ErrTrap: 
 Debug.Print Err.Number, Err.Description 
End Sub

另请参阅

PropertyAccessor 对象

支持和反馈

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