次の方法で共有


Table オブジェクトを使用して、フォルダー内のフィルター処理されたアイテムをパフォーマンスよく列挙する

このトピックのコード サンプルでは、 Table オブジェクトを使用して、フィルターを適用した受信トレイ内のアイテムのうちで、2005 年 5 月 1 日以降に更新されたものを列挙します。 これらの各アイテムについて、件名、アイテムの最終更新日時、およびアイテムが非表示かどうかを出力します。 手順は次のとおりです。

  1. メール アイテムの LastModificationTime プロパティの値に基づいてフィルターを定義します。

  2. Folder.GetTable にフィルターを適用し、受信トレイのメール アイテムのうちでフィルターの条件を満たすアイテムのサブセットで構成される Table を取得します。

メモ 返されるテーブルには、フィルター処理された各項目の既定のプロパティ セット ( EntryIDSubjectCreationTimeLastModificationTimeMessageClass) が含まれています。 3. 次に、Columns.RemoveAllColumns.Add を使用して、実際に必要なプロパティ (SubjectLastModificationTime、hidden 属性 (PidTagAttributeHidden) を使用してテーブルを更新します。 明示的な組み込み名を持つプロパティ ( SubjectLastModificationTime など) を指定し、存在しない場合にのみ、名前空間 (メール アイテムの非表示属性など) によってプロパティを参照します。

メモ手順 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 のサポートおよびフィードバックを参照してください。