1

正如标题所示,我无法触发高级搜索完成事件。我正在通过 Excel 2013 运行 VBA。我在 worksheet1 中运行了一个子程序,它创建了一个测试对象,然后运行高级搜索。这一切正常,搜索对象确实返回结果。但是,高级搜索完成事件永远不会触发。有任何想法吗?

谢谢!

主要代码:

Sub testing()

Dim test As Class1
Set test = New Class1

Call test.TestAdvancedSearchComplete

End Sub

第一类:

Dim myOlApp As New Outlook.Application
Public blnSearchComp As Boolean
Dim sch As Outlook.search
Dim rsts As Outlook.Results



Private Sub myOlApp_AdvancedSearchComplete(ByVal SearchObject As search)
    MsgBox "The AdvancedSearchComplete Event fired."
    blnSearchComp = True
End Sub



Sub TestAdvancedSearchComplete()
Dim i As Integer

blnSearchComp = False
Const strF As String = "urn:schemas:mailheader:subject = 'Test'"
Const strS As String = "Inbox"

Set sch = myOlApp.AdvancedSearch(strS, strF, False, “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
4

2 回答 2

1

要允许引发事件,您需要声明您的对象WithEvents

Dim WithEvents myOlApp As New Outlook.Application
于 2015-08-10T00:38:45.640 回答
0

AdvancedSearchComplete 事件有一个特殊的过程名称,编译器需要查看它才能将您的代码与事件联系起来。将过程名称更改为:

Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)
于 2015-08-10T00:29:51.483 回答