You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

微软6月15日停用IE后,调用IE/HTMLDocument的VBA代码能否正常运行?

IE停服后VBA网页自动化程序的适配方案

首先明确结论:

  • 2022年6月15日微软停止IE支持后,后续Windows累积更新会直接移除独立版IE程序,你当前代码中调用的InternetExplorer对象会因为找不到宿主程序直接报错,原有逻辑无法正常运行。

补充:停服初期部分未更新的系统可能暂时还能运行IE相关代码,但这属于临时兼容状态,只要系统安装后续更新就会彻底失效,完全不适合作为长期方案依赖。

目前有三种可落地的处理方式,你可以根据自己的使用场景选择:

1. 临时过渡:调用Edge IE模式

如果只是短期需要跑原有代码、暂时不想改逻辑,可以通过配置组策略/注册表,让系统调用Edge的IE兼容模式承接原来的IE COM对象调用。但这个方案需要在每台运行程序的设备上单独做配置,且微软官方明确IE模式仅支持到2029年,后续也会下线,只适合临时救急使用。

2. 长期稳定方案:替换为Selenium驱动现代浏览器

这是目前最通用的替代方案,代码逻辑和你原来的IE自动化逻辑几乎一致,适配成本很低:

  • 先安装Selenium Basic组件,安装完成后打开VBA编辑器,在「工具-引用」里勾选Selenium Type Library
  • 将原有IE对象替换为对应浏览器的Driver对象即可,适配后的参考代码如下:
Option Explicit

Sub automateBrowser()
    Dim bot As Selenium.EdgeDriver
    Dim URL As String

    Set bot = New Selenium.EdgeDriver
    URL = "https://www.simpleexcelvba.com/"

    bot.Visible = True
    bot.Get URL
    ' 节点操作逻辑和原代码高度相似
    bot.FindElementByName("s").SendKeys "Connect to SAP"
    bot.FindElementByClass("search-submit").Click
End Sub

提示:如果运行时提示浏览器驱动版本不匹配,下载和当前设备Edge版本号一致的驱动文件,放到Selenium Basic安装目录覆盖旧文件即可。

3. 轻量场景:无浏览器HTML解析方案

如果你的使用场景不需要渲染JS动态内容、不需要可视化操作页面,只是做静态页面的数据提取/简单提交,可以完全不依赖浏览器进程:用XMLHTTP对象直接拉取网页源码,再交给HTMLDocument对象做解析,运行速度更快,也完全不受浏览器更新、停服的影响。
参考代码如下:

Option Explicit

Sub parsePageNoBrowser()
    Dim http As Object
    Dim doc As HTMLDocument
    Dim URL As String

    Set http = CreateObject("MSXML2.XMLHTTP.6.0")
    Set doc = New HTMLDocument
    URL = "https://www.simpleexcelvba.com/"

    ' 拉取网页源码
    http.Open "GET", URL, False
    http.send
    ' 载入HTML对象后,后续节点操作和原代码完全一致
    doc.body.innerHTML = http.responseText
    doc.getElementsByName("s").Item(0).Value = "Connect to SAP"
End Sub

注意:这个方案无法处理需要登录态校验、JS动态渲染的页面,仅适合静态网页场景。

你原来的旧版IE调用代码如下,不建议后续继续使用:

Option Explicit

 Sub automateIE()

 Dim IE As InternetExplorer
 Dim doc As HTMLDocument
 Dim URL As String

 Set IE = New InternetExplorer

 Let URL = "https://www.simpleexcelvba.com/"

 IE.Visible = True
 IE.navigate URL

 Do While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop

 Set doc = IE.Document
 doc.getElementsByName("s").Item(0).Value = "Connect to SAP"
 doc.getElementsByClassName("search-submit").Item(0).Click

 End Sub

内容的提问来源于stack exchange,提问作者user3239332

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:56:48