Partager via


Rechercher des éléments de la boîte de réception dont l'objet contient « Office »

Cette rubrique présente deux exemples de code qui utilisent des requêtes DASL pour rechercher les éléments dans la Boîte de réception dont la ligne d'objet contient le mot « Office ». Le premier exemple de code utilise Folder.GetTable et le second utilise Application.AdvancedSearch pour appliquer la requête DASL.

Chacun des exemples de code utilise le mot clé de l’indexeur de contenu ci_phrasematch dans un filtre DASL sur la propriété https://schemas.microsoft.com/mapi/proptag/0x0037001E (propriété Subject référencée par l’espace de noms MAPI ID) pour rechercher le mot « office » dans l’objet. Elle applique le filtre à des éléments de la boîte de réception (en utilisant Folder.GetTable ou Application.AdvancedSearch) et imprime la ligne d’objet de chaque élément renvoyé par la recherche. Note La correspondance n’étant pas sensible à la casse, tout élément contenant « Office » ou « office » dans l’objet sera retourné par Folder.GetTable ou Application.AdvancedSearch. Notez que chaque exemple imprime l’objet de chaque ligne dans la table résultante. Il choisit d’utiliser l’objet Table de poids plus léger au lieu de l’objet Search.Results pour de meilleures performances. La propriété Subject est incluse dans une table retournée par une recherche dans n’importe quel dossier. Mais comme n’importe quel dossier dans Outlook, la boîte de réception peut contenir des éléments hétérogènes et n’est pas limitée aux éléments de courrier. Si vous souhaitez accéder à une propriété spécifique à un certain type d’élément dans la boîte de réception, utilisez Columns.Add pour inclure cette propriété et mettre à jour la table. Pour chaque ligne retournée dans la table, vérifiez le type de message de l’élément avant d’accéder à la propriété. Cet exemple de code utilise Folder.GetTable pour effectuer la recherche :

Sub RestrictTableForInbox() 
    Dim oT As Outlook.Table 
    Dim strFilter As String 
    Dim oRow As Outlook.Row 
     
    'Construct filter for Subject containing 'Office' 
    Const PropTag  As String = "https://schemas.microsoft.com/mapi/proptag/" 
    strFilter = "@SQL=" & Chr(34) & PropTag _ 
        & "0x0037001E" & Chr(34) & " ci_phrasematch 'Office'" 
     
    'Do search and obtain Table on Inbox 
    Set oT = Application.Session.GetDefaultFolder(olFolderInbox).GetTable(strFilter) 
     
    'Print Subject of each returned item 
    Do Until oT.EndOfTable 
        Set oRow = oT.GetNextRow 
        Debug.Print oRow("Subject") 
    Loop 
End Sub

Cet exemple de code utilise Application.AdvancedSearch pour effectuer la recherche :

Public blnSearchComp As Boolean 
Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search) 
    MsgBox "The AdvancedSearchComplete Event fired" 
    blnSearchComp = True 
End Sub 
 
Sub TestSearchWithTable() 
    Dim oSearch As Search 
    Dim oTable As Table 
    Dim strQuery As String 
    Dim oRow As Row 
         
    blnSearchComp = False 
     
    'Construct filter. 0x0037001E represents Subject 
    strQuery = _ 
        "https://schemas.microsoft.com/mapi/proptag/0x0037001E" & _ 
        " ci_phrasematch 'Office'" 
     
    'Do search 
    Set oSearch = _ 
        Application.AdvancedSearch("Inbox", strQuery, False, "Test") 
    While blnSearchComp = False 
        DoEvents 
    Wend 
 
    'Obtain Table 
    Set oTable = oSearch.GetTable 
     
    'Print Subject of each returned item 
    Do Until oTable.EndOfTable 
        Set oRow = oTable.GetNextRow 
        Debug.Print oRow("Subject") 
    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.