首页 > 解决方案 > 使用 MSHTML.HTMLDocument 时强制 documentMode

问题描述

在 Excel 中使用时可以HTMLDocument强制指定特定值吗?documentModeMSHTML

到目前为止,与此相关的所有属性和方法似乎都只返回值而无法设置(例如 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.dllmsxml6.dll我的机器相同的版本。

标签: excelvba

解决方案


  1. 我使用 InternetExplorer 的实例而不是 MSXML2.XMLHTTP.6.0
  2. 我没有从 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

推荐阅读