excel - 使用 MSHTML.HTMLDocument 时强制 documentMode
问题描述
在 Excel 中使用时可以HTMLDocument
强制指定特定值吗?documentMode
MSHTML
到目前为止,与此相关的所有属性和方法似乎都只返回值而无法设置(例如 documentMode、compatMode、compatible)。
在抓取和解析 HTML 时,我在组织中的其他机器上的 Excel 中得到了不同的行为,这就是为什么我想尽可能地标准化。
代码:
Dim doc As HTMLDocument
Set doc = New HTMLDocument
Debug.Print "compatMode: " & doc.compatMode
Debug.Print "documentMode: " & doc.documentMode
我的机器:
compatMode: BackCompat
documentMode: 11
其他机器:
compatMode: BackCompat
documentMode: 5
对于我比较的系统,操作系统版本和 MS Office (O365) 版本与我的机器相同。我还比较了msxml3.dll
和msxml6.dll
我的机器相同的版本。
解决方案
- 我使用 InternetExplorer 的实例而不是 MSXML2.XMLHTTP.6.0
- 我没有从 MSHTML 中实例化各种类,而是简单地使用了通用 Object 类。从 MSHTML 实例化任何内容都会引入不同的 documentMode。
代码示例:
'Get document using IE
Dim doc As HTMLDocument
...
set doc = ie.Document
'Old - Extracting rows
Dim element As MSHTML.HTMLGenericElement
For Each element In tableRows
'New - Extracting rows
Dim element As Object
For Each element In tableRows
推荐阅读
- html - 列表项未根据给定命令执行
- javascript - Mocha 的基本功能“describe/before/it”是如何实现的?
- vue.js - 仅当用户通过验证时才允许用户转到页面
- python - 没有名为“numpy”的模块,但要求已经满足:numpy
- purescript - 是否可以在 PureScript 中进行多态行(或记录)投影?
- bash - 使用 awk 脚本转换 csv 文件
- reactjs - 对heroku做出反应并得到以下错误
- javascript - 在 ejs 中设置选择选项值
- angular - node-pre-gyp install --fallback-to-build --library=static_library
- javascript - 在 Javascript 中计算正确的 md5 值