AdvancedSearch 方法

       

根据指定的 SQL 搜索字符串进行搜索,并返回 Search 对象。

expression.AdvancedSearch(Scope, Filter, SearchSubFolders, Tag)

expression  必选。该表达式返回 Application 对象。

Scope  必选,String 类型。搜索范围。例如,文件夹的名称。

Filter  可选,Variant 类型。定义搜索参数的 DASL 筛选条件。

SearchSubFolders  可选,Variant 类型。决定该搜索是否包括子文件夹。

Tag  可选,Variant 类型。指定作为搜索标识符的名称。

说明

通过在代码的连续几行中调用 AdvancedSearch 方法可以同时执行多个搜索。但为了获取有意义的结果,请使用 AdvancedSearchComplete 事件通知同步搜索的结束。

示例

以下示例使用 AdvancedSearch 方法创建新的搜索。AdvancedSearch 方法的 Filter 参数指定的搜索参数将返回“收件箱”中所有未标记的项目。

Sub SearchForFlags()
    'List all items in the Inbox that do NOT have a flag:
    Dim objSch As Search
    Const strF As String = "urn:schemas:httpmail:messageflag = 0" & _
        " OR urn:schemas:httpmail:messageflag IS NULL"
    Const strS As String = "Inbox"
    Set objSch = Application.AdvancedSearch(strS, strF)
End Sub

以下示例返回“收件箱”中所有标题为“Office Christmas Party”的项目。参数 Tag 将搜索与一个字符串相关联。这在执行多条搜索时很有用处。

Sub SearchInboxFolder()
'Searches the Inbox
    Dim objSch As Search
    Const strF As String = "urn:schemas:mailheader:subject = 'Office Christmas Party'"
    Const strS As String = "Inbox"
    Const strTag As String = "SubjectSearch"
    Set objSch = Application.AdvancedSearch(Scope:=strS, _
        Filter:=strF, Tag:=strTag)
End Sub

以下示例使用 AdvancedSearchComplete 事件获取搜索的结果。并显示搜索的 Tag 属性以通知用户已完成的搜索。该事件非常重要,因为它通知搜索结束并且使用户可以获取完整和有意义的数据集。这是确定搜索已经完成的唯一方法。

Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)
    Dim objRsts As Results
    MsgBox "The search " & SearchObject.Tag & "has completed."
    Set objRsts = SearchObject.Results
    'Print out number in Results collection
    Debug.Print objRsts.Count
    'Print out each member of Results collection
    For Each Item In objRsts
        Debug.Print Item
    Next
End Sub

也可以同时在多个文件夹上进行搜索。以下示例在用户的“收件箱”、“日历”和“任务”文件夹中搜索所有主题为“Fiftieth Birthday Party”的项目。

Sub SearchForSubject()
'Search for all items with a certain subject
'in multiple folders

    Dim objSch As Search
    'Search for items where subject is not an empty string
    Const strFilter As String = _
        "urn:schemas:httpmail:subject = 'Fiftieth Birthday Party'"
    'In the Inbox, Calendar, and Tasks folders
    Const strScope As String = "'Inbox', 'Calendar', 'Tasks'"
    Set objSch = Application.AdvancedSearch(strScope, strFilter)

End Sub