共用方式為


PropertyAccessor.SetProperties method (Outlook)

會將陣列 SchemaNames 指定的屬性設定為陣列 Values 指定的值。

語法

expressionSetProperties( _SchemaNames_ , _Values_ )

一個代表 PropertyAccessor 物件的變數。

參數

名稱 必要/選用 資料類型 描述
結構名稱 必要 Variant 一個屬性名稱陣列,其值將依照 Values 參數指定的設定設定。 這些屬性是依命名空間參照。 如需詳細資訊,請參閱依命名空間參照屬性
必要 Variant 一個要為 SchemaNames 參數所指定的屬性設定的值陣列。

傳回值

在 VBA 中,若操作成功,則) Null (Nothing。 例如,如果在設定任何屬性前發生錯誤, SchemaNames 陣列中的元素數與 Values 陣列的數量不符,將會回傳 Err 值。 若設定屬性時發生錯誤,回傳值為 Err 物件陣列,該陣列中的元素數與 SchemaNames 陣列相同。 陣列中的 Err 值會映射到設定 SchemaNames 參數中相應屬性的錯誤結果。

註解

如果該屬性不存在,且 SchemaNames 元素包含有效的屬性指定符,則 SetProperties 會建立該屬性,並將屬性與 Values 指定的值指派。 屬性的類型就是 Values 中傳遞之元素的類型。 如果屬性存在,SetProperties 就會將 Values 所指定的值指派給屬性。

請注意,使用 PropertyAccessor 建立的自訂屬性在自訂檢視中並不支援。 如果你想查看某個項目的自訂屬性,請使用 UserProperties 物件的 Add 方法來建立該屬性。

如果 PropertyAccessor 的父物件支援明確的 Save 操作,則應透過明確的 Save 方法呼叫將屬性儲存到物件中。 如果物件不支援明確的 Save 作業,在呼叫 SetProperties 時,屬性會儲存至物件。

請特別小心,務必正確處理所有的例外狀況。 設定屬性失敗的狀況包括:

  • 因為部分 Outlook 及 MAPI 屬性為唯讀,因此該屬性為唯讀屬性。

  • 找不到指定的命名空間所參照的屬性。

  • 指定屬性的格式無效而且無法剖析。

  • 該屬性不存在而且無法建立。

  • 該屬性存在但傳遞錯誤類型的值。

  • 因為用戶端為離線狀態,因此無法開啟該屬性。

  • 該屬性是使用 UserProperties.Add 方法建立的。 首次設定該屬性時,必須使用 UserProperty.Value 屬性,而非 PropertyAccessor 物件的 SetPropertiesSetProperty 方法。

欲了解更多使用 PropertyAccessor 物件設定屬性的資訊,請參閱 取得與設定屬性的最佳實務

範例

下列程式碼範例會說明 SetProperties 方法如何設定多個屬性值。 如果屬性不存在,只要父物件支援這些屬性的建立,SetProperties 就會建立屬性。 由於 MailItem 物件支援 MailItem.Save 操作,這裡的屬性是以明確的 oMail.Save. 來儲存。

Sub DemoPropertyAccessorSetProperties() 
 Dim PropNames(), myValues() As Variant 
 Dim arrErrors As Variant 
 Dim prop1, prop2, prop3, prop4 As String 
 Dim i As Integer 
 Dim oMail As Outlook.MailItem 
 Dim oPA As Outlook.PropertyAccessor 
 'Get first item in the inbox 
 Set oMail = _ 
 Application.Session.GetDefaultFolder(olFolderInbox).Items(1) 
 'Names for properties using the MAPI string namespace 
 prop1 = "http://schemas.microsoft.com/mapi/string/" & _ 
 "{FFF40745-D92F-4C11-9E14-92701F001EB3}/mylongprop" 
 prop2 = "http://schemas.microsoft.com/mapi/string/" & _ 
 "{FFF40745-D92F-4C11-9E14-92701F001EB3}/mystringprop" 
 prop3 = "http://schemas.microsoft.com/mapi/string/" & _ 
 "{FFF40745-D92F-4C11-9E14-92701F001EB3}/mydateprop" 
 prop4 = "http://schemas.microsoft.com/mapi/string/" & _ 
 "{FFF40745-D92F-4C11-9E14-92701F001EB3}/myboolprop" 
 PropNames = Array(prop1, prop2, prop3, prop4) 
 myValues = Array(1020, "111-222-Kudo", Now(), False) 
 'Set values with SetProperties call 
 'If the properties don't exist, then SetProperties 
 'adds the properties to the object when saved. 
 'The type of the property is the type of the element 
 'passed in myValues array. 
 Set oPA = oMail.PropertyAccessor 
 arrErrors = oPA.SetProperties(PropNames, myValues) 
 If Not (IsEmpty(arrErrors)) Then 
 'Examine the arrErrors array to determine if any 
 'elements contain errors 
 For i = LBound(arrErrors) To UBound(arrErrors) 
 'Examine the type of the element 
 If IsError(arrErrors(i)) Then 
 Debug.Print (CVErr(arrErrors(i))) 
 End If 
 Next 
 End If 
 'Save the item 
 oMail.Save 
End Sub

另請參閱

PropertyAccessor 物件

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應