我正在使用Excel VBA自动执行加载网页的过程,然后再对页面进行进一步的数据处理。但我无法确定网页何时完全加载(包括图像,脚本,iframe等)。
我创建了一个InternetExplorer类对象并监听以下事件: 在BeforeNavigate2 NavigateComplete2 的DocumentComplete
我在MSDN和本网站上看到了与VB和C / C ++有关的解决方案,但在使用VBA时似乎都没有。 问题似乎是DocumentComplete将收到多个事件,而我还没有弄清楚如何确定所有事件何时被触发并知道一切都已完成。
通过查看提供的MSDN代码示例,似乎建议通过NavigateComplete2的初始pdisp对象将是最顶层的框架,如果将pdisp对象传递给DocumentComplete,那么您知道它是最顶层的(最后一个是加载)但似乎并非如此。
以下是我的类对象的大致轮廓。
Private WithEvents mIEApp As InternetExplorer
Private mobjIDispatch As Object
Private Sub mIEApp_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
If mobjIDispatch Is Nothing Then
Set mobjIDispatch = pDisp
End IF
End Sub
Private Sub mIEApp_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If (pDisp Is mobjIDispatch) Then Debug.Print "Should be the page fully loaded!?"
End Sub
是否有人有一个可行的解决方案来确定何时使用VBA完全加载页面?
非常感谢任何帮助。我正在把这头发拉出来。我无法弄清楚适用于所有网站的解决方案。
此致