テーブル内の複数値プロパティの値にアクセスする
通常、明示的な組み込み名を使用して複数値のプロパティが Table に追加される場合、プロパティの値の形式はコンマ区切りの文字列です。 複数値を持つプロパティを Table に追加するときに、名前空間による参照を使用すると、プロパティ値の形式はバリアントの配列になります。
次のコード サンプルでは、複数値を持つ Categories プロパティを、その名前空間 urn:schemas-microsoft-com:office:office#Keywords を参照する名前を使用して、Table に追加します。 Table の各行について、Categories の値を取得するために、
oRow("urn:schemas-microsoft-com:office:office#Keywords")
をバリアントに代入し、バリアント配列の要素を列挙します。 カテゴリが割り当てられていない項目の場合は、バリアント型に割り当て、バリアント配列の要素を列挙します。 カテゴリが割り当てられていないアイテムについては、
oRow("urn:schemas-microsoft-com:office:office#Keywords")
は Empty 値を返します。
Sub TableCategories()
Dim oT As Outlook.Table
Dim oRow As Outlook.Row
Dim varCat
Dim j As Integer
Dim strCategories As String
Set oT = Application.ActiveExplorer.CurrentFolder.GetTable()
oT.Columns.Add ("urn:schemas-microsoft-com:office:office#Keywords")
oT.Sort "LastModificationTime", True
Do Until oT.EndOfTable
Set oRow = oT.GetNextRow
'Obtain any values of the Categories property
varCat = oRow("urn:schemas-microsoft-com:office:office#Keywords")
If Not (IsEmpty(varCat)) Then
'Form a string out of the item's categories
For j = 0 To UBound(varCat)
strCategories = strCategories & (varCat(j)) & ", "
Next
'Remove last trailing ", "
strCategories = Left(strCategories, Len(strCategories) - 2)
Else
'The item does not have any categories
strCategories = ""
End If
Debug.Print ("Subject: " _
& oRow("Subject") & vbCrLf & "Categories: ") & strCategories & vbCrLf
Loop
End Sub
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。