Freigeben über


Durchsuchen des Posteingangs nach Elementen, deren Betreff 'Office' enthält

In diesem Thema werden zwei Codebeispiele gezeigt, in denen mithilfe von DASL-Abfragen nach Elementen im Posteingang gesucht wird, deren Betreffzeile "Office" enthält. Im ersten Codebeispiel wird Folder.GetTable verwendet, im zweiten wird Application.AdvancedSearch verwendet, um die DASL-Abfrage anzuwenden.

Jedes der Codebeispiele verwendet das Inhaltsindexer-Schlüsselwort ci_phrasematch in einem DASL-Filter für die Eigenschaft https://schemas.microsoft.com/mapi/proptag/0x0037001E (die Subject-Eigenschaft , auf die der MAPI-ID-Namespace verweist), um nach dem Wort "office" im Betreff zu suchen. Der Filter wird (mithilfe von Folder.GetTable oder Application.AdvancedSearch) auf Elemente im Posteingang angewendet, und die Betreffzeilen der einzelnen durch die Suche zurückgegebenen Elemente werden gedruckt. Hinweis Bei der Übereinstimmung wird die Groß-/Kleinschreibung nicht beachtet, sodass jedes Element, das "Office" oder "office" im Betreff enthält, von Folder.GetTable oder Application.AdvancedSearch zurückgegeben wird. Beachten Sie, dass jedes Beispiel den Betreff jeder Zeile in der resultierenden Tabelle ausgibt. Für eine bessere Leistung wird anstelle des Search.Results-Objekts das leichtere Table-Objekt verwendet. Die Subject-Eigenschaft ist in einer Tabelle enthalten, die von einer Suche in einem beliebigen Ordner zurückgegeben wird. Wie jeder Ordner in Outlook kann der Posteingang jedoch heterogene Elemente enthalten und ist nicht auf E-Mail-Elemente beschränkt. Wenn Sie auf eine Eigenschaft zugreifen möchten, die für einen bestimmten Elementtyp im Posteingang spezifisch ist, verwenden Sie Columns.Add , um diese Eigenschaft einzuschließen, und aktualisieren Sie die Tabelle. Überprüfen Sie für jede Zeile, die in der Tabelle zurückgegeben wird, den Nachrichtentyp des Elements, bevor Sie auf die Eigenschaft zugreifen. In diesem Codebeispiel wird zum Ausführen der Suche Folder.GetTable verwendet:

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

In diesem Codebeispiel wird zum Ausführen der Suche Application.AdvancedSearch verwendet:

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

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.