Utiliser l’objet Table pour énumérer efficacement les éléments filtrés dans un dossier
L’exemple de code de cette rubrique utilise l’objet Table pour énumérer un ensemble filtré d’éléments dans la boîte de réception qui ont été modifiés pour la dernière fois après le 1er mai 2005. Pour chacun de ces éléments, l’exemple de code imprime ces valeurs : l’objet, l’heure de la dernière modification de l’élément et si l’élément est masqué. La procédure comprend les étapes suivantes :
L’exemple définit un filtre basé sur la valeur de la propriété LastModificationTime des éléments de courrier.
Il applique le filtre à Folder.GetTable et obtient une table d’un sous-ensemble d’éléments de courrier dans la boîte de réception qui satisfait au filtre.
Note La table retournée contient un ensemble de propriétés par défaut pour chacun des éléments filtrés : EntryID, Subject, CreationTime, LastModificationTime et MessageClass. 3. Il utilise ensuite Columns.RemoveAll et Columns.Add pour mettre à jour la table avec les propriétés réellement souhaitées : Subject, LastModificationTime et l’attribut masqué (PidTagAttributeHidden). Il spécifie les propriétés avec leurs noms intégrés explicites s’ils existent (par exemple, Subject, LastModificationTime), et uniquement quand elles ne le font pas, il fait référence aux propriétés par leurs espaces de noms (par exemple, l’attribut masqué d’un élément de courrier).
Note Les objets Table retournés par Folder.GetTable à l’étape 2 et Columns.Add à l’étape 3 contiennent des valeurs de propriété différentes, mais pour le même ensemble d’éléments filtrés dans la boîte de réception. 4. Enfin, il utilise Table.GetNextRow pour énumérer les éléments filtrés (jusqu’à ce que Table.EndOfTable devienne true), affichant les valeurs des trois propriétés souhaitées pour chaque élément.
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
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.