【问题标题】:VBA InternetExplorer.Application Object HangVBA InternetExplorer.Application 对象挂起
【发布时间】:2017-05-24 00:17:45
【问题描述】:

我正在使用带有 VBA 的旧 Excel 文档,该文档在 Windows 7 上的 IE 11 上运行良好,但在 Windows 10 上的 IE 11 上它不起作用。 IE 11 会启动到请求的 URL,仅此而已。每当我尝试访问事件、方法或属性时,它都会停止。没有错误代码,没有崩溃,只是停止。

我已确认我对 Microsoft Internet ControlsMicrosoft HTML 对象库 的引用已包括在内(以前不是,但现在是)。

Dim ie As Object

If ie Is Nothing Then
   Set ie = CreateObject("InternetExplorer.Application")
   ie.Visible = True
End If

url = "www.myurl.com"

ie.Navigate url

While ie.ReadyState <> 4 Or ie.Busy: DoEvents: Wend

检查下面的代码永远不会执行,我在前后放置了 MsgBox 代码进行测试。只有循环之前的 MsgBox 才能工作,除非我尝试使用 MsgBox ie.Document.Title,但我可以使用 MsgBox ie.ReadyStateMsgBox "Loading webpage" 就好了。

再次,代码在带有 IE 11 的 Windows 7 上运行良好,没有问题,但在带有 IE 11 的 Windows 10 上无法运行。在多台 W7 和 W10 机器上测试,结果相同。

【问题讨论】:

  • 在 Windows 10 中手动打开 IE 11 时,是否有任何自动出现的消息框?例如“将其设为您的默认浏览器”等
  • 循环是指While ie.ReadyState &lt;&gt; 4 Or ie.Busy: DoEvents: Wend吗?在此循环之前尝试获取ie.Document.Title 是正常的,因为文档尚未完全加载并且获取其标题将失败。它是如何“停止”的?你的意思是它卡在循环中了吗?尝试使用 F8 单步执行代码。检查 ie.ReadyState 值是什么。
  • 尝试将鼠标悬停在 ie.readystate 上以查看其值或在 VB 编辑器中使用 ctrl+G,输入:?ie.readystate 并按 ENTER 确认。到底IE不是最可靠的东西。我曾经不得不将宏从ie.ReadyState &lt;&gt; 4 更改为ie.ReadyState &lt;3,网站没有完全加载但足以让我获取数据。问题的原因是某些 Google Ads 无法正确加载。
  • @defaultNINJA Object TypeName 表示 IE ActiveX 对象已断开连接,在某些 IE 无法稳定运行的网站上检测到此类问题。看看this answer
  • @defaultNINJA 能否请您分享 URL 以及加载文档后要执行哪些操作?

标签: excel vba internet-explorer windows-10


【解决方案1】:

在尝试了许多不同的选项后,我终于能够让它发挥作用。根据 OmegaStripes 的建议,我开始搞乱兼容模式。像许多事情一样,最简单的解决方案最终成为正确的解决方案。将我的 Intranet 站点添加到兼容性视图设置后,它可以完美地对 VBA 进行零代码更改。

  1. 启动 IE 11
  2. 点击工具
  3. 点击兼容性视图设置
  4. 在文本区域中输入您的 URL,然后单击 添加
  5. 检查在兼容模式下显示 Intranet 站点
  6. 点击关闭

完成此操作后,我退出了 IE 11,使用以前无法运行的 VBA 重新启动了我的 Excel 电子表格。执行了 VBA 代码,它的工作方式与使用 IE 11 的 Windows 7 一样。

希望这对其他人有所帮助,并为他们省去很多麻烦。

特别感谢 OmegaStripes 与我一起坚持并帮助我看到实际问题而不是过度思考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多