我无法在线找到语法示例,无法在vba中将范围设置为多个邮箱的情况下执行高级搜索功能。有没有办法做到这一点,或者您只能在单个邮箱中搜索,如果可以,语法是什么样的?我有这样的范围变量设置。
Scope = "'" & OutApp.Session.Folders("[email protected]").FolderPath & "'"
但是,我还需要在此邮箱和[email protected]上进行搜索,所以我在想,也许有一种方法可以将两个文件夹或其他东西组合在一起?另外,如果还有一种方法也可以搜索Outlook中的所有邮箱,因为我可能会沿用它。感谢您的帮助,因为这是完成我的代码的最后一项!
您必须为每个商店运行单独的搜索过程。
使用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文章很有帮助。