Outlook VBA教程:AdvancedSearch方法

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

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

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

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

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

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

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

说明

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

VBA示例

以下示例使用 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

上页:Outlook VBA教程:AddToPFFavorites方法 下页:Outlook VBA教程:Apply方法

Outlook VBA教程:AdvancedSearch方法:相关链接

Outlook VBA教程:Apply方法 Outlook VBA教程:Assign方法
Outlook VBA教程:CancelResponseState方法 Outlook VBA教程:ClearConversationIndex方法
Outlook VBA教程:ClearRecurrencePattern方法 Outlook VBA教程:Close方法
Outlook VBA教程:Copy方法 Outlook VBA教程:CopyFile方法
Outlook VBA教程:CopyTo方法 Outlook VBA教程:CreateItem方法
Outlook VBA教程:CreateItemFromTemplate方法 Outlook VBA教程:CreateObject方法
Outlook VBA教程:CreateRecipient方法 Outlook VBA教程:Delete方法
Outlook VBA教程:Details方法 Outlook VBA教程:Dial方法
Outlook VBA教程:Dismiss方法 Outlook VBA教程:Display方法
Outlook VBA教程:Execute方法 Outlook VBA教程:Find方法
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号