微软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
相关产品推荐
相关产品推荐

