Excel VBA操作IE标签时新建实例而非新标签的异常问题
VBA控制IE在现有窗口新建标签的修复方案
问题根因
你通过SHDocVw.ShellWindows遍历获取到的InternetExplorer实例,对应的是IE的单个标签页对象,而非IE主窗口实例。直接对单个标签页调用带2048参数的navigate方法时,IE的COM接口会触发窗口克隆行为,就会出现生成新窗口包含原有所有标签+新标签的异常现象。
修复代码修改
只需要修改你代码中IE_sub.navigate my_url, 2048 'new tab这一行即可,有两种兼容写法:
写法1(优先推荐)
IE_sub.Application.Navigate2 my_url, 2048
通过标签页的Application属性拿到IE主应用实例,再调用兼容性更好的Navigate2方法执行打开新标签操作,不会触发窗口克隆。
写法2(最简修改)
如果不需要兼容特殊格式URL,也可以直接替换方法名即可:
IE_sub.Navigate2 my_url, 2048
参数说明
- 2048:标识新标签在前台打开激活,如果需要后台打开不切换当前标签,可以替换为4096
- 必须使用
Navigate2而非原生Navigate,后者对新标签参数的支持存在COM接口兼容问题
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

