excel - VBA Internet Explorer - 对象变量消失
问题描述
我正在尝试使用 VBA 学习网络抓取,并且在最基本的第一步中遇到了问题。
问题(我认为)是在执行 IEObject.Navigate 之后,IEObject 的所有变量都消失了。所以我得到了错误
“运行时错误‘426’:远程服务器机器不存在或不可用”
在第 8 行。任何帮助表示赞赏。
代码:
Sub VBAWeb()
Dim IEObject As InternetExplorer
Set IEObject = New InternetExplorer
IEObject.Visible = True
IEObject.Navigate URL:="https://google.com"
Do While IEObject.Busy = True Or IEObject.ReadyState <> READYSTATE_COMPLETE
Application.Wait Now + TimeValue("00:00:01")
Loop
Debug.Print IEObject.LocationURL
End Sub
解决方案
我建议您尝试在下面运行代码可能有助于解决问题。
Sub demo()
Dim URL As String
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
URL = "https://www.microsoft.com"
IE.Navigate URL
Do While IE.ReadyState = 4: DoEvents: Loop
Do Until IE.ReadyState = 4: DoEvents: Loop
Debug.Print IE.LocationURL
Set IE = Nothing
End Sub
您可以看到 IE 对象的创建方式不同。此外,循环有点不同。
推荐阅读
- ruby-on-rails - PATCH 操作中的 SCIM 用户名
- sql-server - SQL - 避免字符串重复,中间有空格
- visual-studio-code - 如何在 vscode 上获得 Firefox 扩展 API 的自动完成/智能感知功能?
- javascript - 有没有办法在捆绑包中选择添加功能?
- mongodb - 'mongod' 不是内部或外部命令、可运行程序或批处理文件
- ios - 检测 Text.DateStyle.timer 何时到达 00:00
- wpf - ResourceDictionary makes use of UserControl -> Resources within UserControl cannot be resolved
- python - 切片索引必须是整数或 None 或者在 numpy python3 中有一个 __index__ 方法
- c# - 无法翻译 LINQ 表达式!?为什么?
- java - 在集成流中包含数据持久性的最佳实践 (SpringIntegration)