Application. AdvancedSearch-Methode (Outlook)Application.AdvancedSearch method (Outlook)

Führt eine auf einer angegebenen DASL-Suchzeichenfolge (DAV Searching and Locating) basierende Suche aus.Performs a search based on a specified DAV Searching and Locating (DASL) search string.

SyntaxSyntax

Ausdruck.expression. AdvancedSearch( _Scope_ , _Filter_ , _SearchSubFolders_ , _Tag_ )

expression Eine Variable, die ein Application-Objekt darstellt.expression A variable that represents an Application object.

ParameterParameters

NameName Erforderlich/OptionalRequired/Optional DatentypData type BeschreibungDescription
ScopeScope ErforderlichRequired StringString Der Bereich der Suche.The scope of the search. Beispielsweise der Ordnerpfad eines Ordners.For example, the folder path of a folder. Es wird empfohlen, den Ordnerpfad in einfache Anführungszeichen einzuschließen.It is recommended that the folder path is enclosed within single quotes. Andernfalls liefert die Suche möglicherweise keine richtigen Ergebnisse, wenn der Ordnerpfad Sonderzeichen einschließlich Unicode-Zeichen enthält.Otherwise, the search might not return correct results if the folder path contains special characters including Unicode characters. Um mehrere Ordnerpfade anzugeben, schließen Sie jeden Ordnerpfad in einfache Anführungszeichen ein, und trennen Sie die in einfache Anführungszeichen eingeschlossenen Verzeichnispfade durch ein Komma.To specify multiple folder paths, enclose each folder path in single quotes and separate the single quoted folder paths with a comma.
FilterFilter OptionalOptional VariantVariant Der DASL-Suchfilter, der die Parameter der Suche definiert.The DASL search filter that defines the parameters of the search.
SearchSubFoldersSearchSubFolders OptionalOptional VariantVariant Bestimmt, ob die Suche Unterordner des Ordners einschließt.Determines if the search will include any of the folder's subfolders.
TagTag OptionalOptional VariantVariant Der der Suche als Bezeichner zugewiesene Name.The name given as an identifier for the search.

RückgabewertReturn value

Ein Search-Objekt, das die Ergebnisse der Suche darstellt.A Search object that represents the results of the search.

HinweiseRemarks

Sie können mehrere Suchvorgänge gleichzeitig ausführen, indem Sie die AdvancedSearch-Methode in aufeinanderfolgenden Codezeilen aufrufen.You can run multiple searches simultaneously by calling the AdvancedSearch method in successive lines of code. Sie sollten sich jedoch bewusst sein, dass das programmgesteuerte Erstellen einer großen Anzahl von Suchordnern zu umfangreichen gleichzeitigen Suchaktivitäten führen kann, die sich auf die Leistung von Outlook auswirken können, insbesondere, wenn Outlook die Suche im Exchange-Onlinemodus ausführt.However, you should be aware that programmatically creating a large number of search folders can result in significant simultaneous search activity that would affect the performance of Outlook, especially if Outlook conducts the search in online Exchange mode.

Die AdvancedSearch -Methode und die damit verbundenen Features im Outlook-Objektmodell erstellen keinen Suchordner, der in der Outlook-Benutzeroberfläche angezeigt wird.The AdvancedSearch method and related features in the Outlook object model do not create a Search Folder that will appear in the Outlook user interface. Sie können jedoch die Save -Methode des zurückgegebenen Search-Objekts verwenden, um einen Suchordner zu erstellen, der in der Suchordnerliste in der Outlook-Benutzerschnittstelle angezeigt wird.However, you can use the Save method of the Search object that is returned to create a Search Folder that will appear in the Search Folders list in the Outlook user interface.

Mithilfe des Scope-Parameters können Sie einen oder mehrere Ordner im gleichen Speicher angeben, aber Sie können nicht mehrere Ordner in mehreren Speichern angeben.Using the Scope parameter, you can specify one or more folders in the same store, but you may not specify multiple folders in multiple stores. Um mehrere Ordner im gleichen Speicher für den Scope-Parameter anzugeben, verwenden Sie ein Komma zwischen jedem Ordnerpfad und setzen jeden Ordnerpfad in einfache Anführungszeichen.To specify multiple folders in the same store for the Scope parameter, use a comma character between each folder path and enclose each folder path in single quotes. Für Standardordner wie "Posteingang" oder "Gesendete Objekte" können Sie den einfachen Ordnernamen anstelle des vollständigen Ordnerspfads verwenden.For default folders such as Inbox or Sent Items, you can use the simple folder name instead of the full folder path. Die folgenden beiden Codezeilen stellen zum Beispiel gültige Scope-Parameter dar:For example, the following two lines of code represent valid Scope parameters:

Scope = "'Inbox', 'Sent Items'"
Scope = "'" & Application.Session.GetDefaultFolder(olFolderInbox).FolderPath _  
    & "','" & Application.Session.GetDefaultFolder(olFolderSentMail).FolderPath & "'"

Der Filter-Parameter kann eine beliebige gültige DASL-Abfrage sein.The Filter parameter can be any valid DASL query. Weitere Informationen über DASL-Abfragen finden Sie unter Filtern von Elementen und Verweisen auf Eigenschaften mithilfe von Namespaces.For additional information on DASL queries, see Filtering Items and Referencing Properties by Namespace. Beachten Sie, dass Sie keine JET-Abfrage für den Filter-Parameter der erweiterten Suche verwenden können.Note that you cannot use a JET query for the Filter parameter of Advanced Search. Wenn die Sofortsuche für einen Speicher aktiviert ist, der einen im Scope-Parameter angegebenen Ordner enthält, können Sie Schlüsselwörter für die Sofortsuche verwenden, um die Leistung der Suche zu verbessern.If Instant Search is enabled on a store that contains a folder specified in the Scope parameter, you can use Instant Search keywords to improve the performance of your search. Wenn Sie Sofortsuche-Schlüsselwörter verwenden und die Sofortsuche nicht aktiviert ist, gibt Outlook einen Fehler zurück und die Suche schlägt fehl.If you use Instant Search keywords and Instant Search is not enabled, Outlook will return an error and your search will fail.

BeispielExample

Das folgende VBA-Beispiel (Visual Basic for Applications) durchsucht den Posteingang nach Elementen mit dem Betreff Test und zeigt die Namen der Absender der von der Suche zurückgegebenen E-Mail-Elemente an.The following Visual Basic for Applications (VBA) example searches the Inbox for items with subject equal to Test and displays the names of the senders of the email items returned by the search. Die AdvancedSearchComplete-Ereignisprozedur legt den booleschen Wert blnSearchComp auf TRUE fest, wenn die Suche abgeschlossen ist.The AdvancedSearchComplete event procedure sets the boolean blnSearchComp to True when the search is complete. Diese boolesche Variable wird von der TestAdvancedSearchComplete()-Prozedur verwendet, um zu bestimmen, wann die Suche abgeschlossen ist.This boolean variable is used by the TestAdvancedSearchComplete() procedure to determine when the search is complete. Der Beispielcode muss in einem Klassenmodul wie ThisOutlookSession platziert werden, und die TestAdvancedSearchComplete()-Prozedur muss aufgerufen werden, bevor die Ereignisprozedur von Outlook aufgerufen werden kann.The sample code must be placed in a class module such as ThisOutlookSession, and the TestAdvancedSearchComplete() procedure must be called before the event procedure can be called by Outlook.

Public blnSearchComp As Boolean  
  
Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)  
    Debug.Print "The AdvancedSearchComplete Event fired"  
    If SearchObject.Tag = "Test" Then  
        m_SearchComplete = True  
    End If  
  
End Sub  
  
Sub TestAdvancedSearchComplete()  
    Dim sch As Outlook.Search  
    Dim rsts As Outlook.Results  
    Dim i As Integer  
    blnSearchComp = False  
    Const strF As String = "urn:schemas:mailheader:subject = 'Test'"  
    Const strS As String = "Inbox"     
    Set sch = Application.AdvancedSearch(strS, strF, "Test")   
    While blnSearchComp = False  
        DoEvents  
    Wend   
    Set rsts = sch.Results  
    For i = 1 To rsts.Count  
        Debug.Print rsts.Item(i).SenderName  
    Next  
End Sub

Das folgende VBA-Beispiel (Microsoft Visual Basic for Applications) verwendet die Methode AdvancedSearch, um eine neue Suche zu erstellen.The following Microsoft Visual Basic for Applications example uses the AdvancedSearch method to create a new search. Die Parameter der Suche, die durch das Argument Filter der AdvancedSearch-Methode angegeben werden, geben alle Elemente in den Ordnern "Posteingang" und "Gesendete Elemente" zurück, in denen die Betreffzeile übereinstimmt oder "Office" enthält.The parameters of the search, as specified by the Filter argument of the AdvancedSearch method, will return all items in the Inbox and Sent Items folders where the Subject phrase-matches or contains "Office". Die Ordner "Posteingang" und "Gesendete Elemente" des Benutzers werden als Bereich der Suche angegeben, und die SearchSubFolders-Eigenschaft wird auf TRUE festgelegt.The user's Inbox and Sent Items folders are specified as the scope of the search and the SearchSubFolders property is set to True. Wenn die Suche abgeschlossen ist, wird die GetTable-Methode für das ** Search**-Objekt für eine leistungsstarke Aufzählung der Suchergebnisse aufgerufen.When the search is complete, the GetTable method is called on the Search object for performant enumeration of search results.

Public m_SearchComplete As Boolean  
  
Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)  
    If SearchObject.Tag = "MySearch" Then  
        m_SearchComplete = True  
    End If  
End Sub  
  
Sub TestSearchForMultipleFolders()  
    Dim Scope As String  
    Dim Filter As String  
    Dim MySearch As Outlook.Search  
    Dim MyTable As Outlook.Table  
    Dim nextRow As Outlook.Row  
    m_SearchComplete = False  
    'Establish scope for multiple folders  
    Scope = "'" & Application.Session.GetDefaultFolder( _  
    olFolderInbox).FolderPath _  
    & "','" & Application.Session.GetDefaultFolder( _  
    olFolderSentMail).FolderPath & "'"  
    'Establish filter  
    If Application.Session.DefaultStore.IsInstantSearchEnabled Then  
        Filter = Chr(34) & "urn:schemas:httpmail:subject" _  
        & Chr(34) & " ci_phrasematch 'Office'"  
    Else  
        Filter = Chr(34) & "urn:schemas:httpmail:subject" _  
        & Chr(34) & " like '%Office%'"  
    End If  
    Set MySearch = Application.AdvancedSearch( _  
    Scope, Filter, True, "MySearch")  
    While m_SearchComplete <> True  
        DoEvents  
    Wend  
    Set MyTable = MySearch.GetTable  
    Do Until MyTable.EndOfTable  
        Set nextRow = MyTable.GetNextRow()  
        Debug.Print nextRow("Subject")  
    Loop  
End Sub

Siehe auchSee also

Application-ObjektApplication Object

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.