Table オブジェクトを使用して、フォルダー内のフィルター処理されたアイテムをパフォーマンスよく列挙する
このトピックのコード サンプルでは、 Table オブジェクトを使用して、フィルターを適用した受信トレイ内のアイテムのうちで、2005 年 5 月 1 日以降に更新されたものを列挙します。 これらの各アイテムについて、件名、アイテムの最終更新日時、およびアイテムが非表示かどうかを出力します。 手順は次のとおりです。
メール アイテムの LastModificationTime プロパティの値に基づいてフィルターを定義します。
Folder.GetTable にフィルターを適用し、受信トレイのメール アイテムのうちでフィルターの条件を満たすアイテムのサブセットで構成される Table を取得します。
メモ 返されるテーブルには、フィルター処理された各項目の既定のプロパティ セット ( EntryID、 Subject、 CreationTime、 LastModificationTime、 MessageClass) が含まれています。 3. 次に、Columns.RemoveAll と Columns.Add を使用して、実際に必要なプロパティ (Subject、LastModificationTime、hidden 属性 (PidTagAttributeHidden) を使用してテーブルを更新します。 明示的な組み込み名を持つプロパティ ( Subject、 LastModificationTime など) を指定し、存在しない場合にのみ、名前空間 (メール アイテムの非表示属性など) によってプロパティを参照します。
メモ手順 2 の Folder.GetTable と手順 3 の Columns.Add から返される Table オブジェクトには、異なるプロパティ値が含まれていますが、受信トレイ内のフィルター処理された項目のセットは同じです。 4. 最後に、 Table.GetNextRow を使用して ( Table.EndOfTable が true になるまで) フィルター処理された項目を列挙し、各項目の 3 つの必要なプロパティの値を表示します。
Sub DemoTable()
'Declarations
Dim Filter As String
Dim oRow As Outlook.Row
Dim oTable As Outlook.Table
Dim oFolder As Outlook.Folder
'Get a Folder object for the Inbox
Set oFolder = Application.Session.GetDefaultFolder(olFolderInbox)
'Define Filter to obtain items last modified after May 1, 2005
Filter = "[LastModificationTime] > '5/1/2005'"
'Restrict with Filter
Set oTable = oFolder.GetTable(Filter)
'Remove all columns in the default column set
oTable.Columns.RemoveAll
'Specify desired properties
With oTable.Columns
.Add ("Subject")
.Add ("LastModificationTime")
'PidTagAttributeHidden referenced by the MAPI proptag namespace
.Add ("https://schemas.microsoft.com/mapi/proptag/0x10F4000B")
End With
'Enumerate the table using test for EndOfTable
Do Until (oTable.EndOfTable)
Set oRow = oTable.GetNextRow()
Debug.Print (oRow("Subject"))
Debug.Print (oRow("LastModificationTime"))
Debug.Print (oRow("https://schemas.microsoft.com/mapi/proptag/0x10F4000B"))
Loop
End Sub
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。