在Excel VBA中处理InternetExplorer对象事件

时间:2014-11-18 13:53:39

标签: excel vba internet-explorer events object

我想在Excel VBA代码中处理对象InternetExplorer的事件。

在此页面上,您可以看到InternetExplorer对象的所有可用事件: http://msdn.microsoft.com/en-us/ie/aa752084(v=vs.94).aspx

Dim ie As InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")

ie.Visible = True

ie.Navigate "http://www.google.com"

While ie.Busy
    DoEvents
Wend

Set mybrowser = Nothing

我想抓住BeforeNavigateNavigateComplete个事件,上面的代码应该触发。

我如何设置我的代码呢?

1 个答案:

答案 0 :(得分:1)

DimWithEvents关键字一起使用。

来自documentation

  

<强>语法

     

Dim [ WithEvents ] varname [([subscripts])] [As [New] type] [,[WithEvents] varname [([subscripts])] [As [New] type]] 。 。

     

WithEvents :可选。指定varname是用于响应ActiveX对象触发的事件的对象变量的关键字。 WithEvents仅在课程模块中有效。您可以使用WithEvents声明任意数量的单个变量,但不能使用WithEvents创建数组。你不能在WithEvents中使用New。

Clmusy示例Class1类模块,仅供参考:

Option Explicit

Dim WithEvents ie As InternetExplorer

Private Sub Class_Initialize()
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate "http://www.duckduckgo.com"
    While ie.Busy
        DoEvents
    Wend
    Set ie = Nothing
End Sub

使用示例:

Sub tester()
    Dim c As Class1
    Set c = New Class1
End Sub