将高级搜索范围设置为多个邮箱

问题描述 投票:0回答:1

我无法在线找到语法示例,无法在vba中将范围设置为多个邮箱的情况下执行高级搜索功能。有没有办法做到这一点,或者您只能在单个邮箱中搜索,如果可以,语法是什么样的?我有这样的范围变量设置。

Scope = "'" & OutApp.Session.Folders("[email protected]").FolderPath & "'"

但是,我还需要在此邮箱和[email protected]上进行搜索,所以我在想,也许有一种方法可以将两个文件夹或其他东西组合在一起?另外,如果还有一种方法也可以搜索Outlook中的所有邮箱,因为我可能会沿用它。感谢您的帮助,因为这是完成我的代码的最后一项!

vba outlook
1个回答
0
投票

您必须为每个商店运行单独的搜索过程。

使用Scope参数,您可以在同一存储中指定一个或多个文件夹,但是不能在多个存储中指定多个文件夹。要为Scope参数在同一存储中指定多个文件夹,请在每个文件夹路径之间使用逗号,并将每个文件夹路径括在单引号中。对于“收件箱”或“已发送邮件”之类的默认文件夹,您可以使用简单文件夹名称而不是完整文件夹路径。例如,以下两行代码代表有效的Scope参数:

Scope = "'Inbox', 'Sent Items'"

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

例如,一个用例可能看起来像这样:

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

最后,您可能会发现Advanced search in Outlook programmatically: C#, VB.NET文章很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.