【问题标题】:Forcing documentMode when using MSHTML.HTMLDocument使用 MSHTML.HTMLDocument 时强制 documentMode
【发布时间】:2020-10-23 12:49:32
【问题描述】:

在 Excel 中使用 MSHTML 时可以将 HTMLDocument 强制为特定的 documentMode 吗?

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

【问题讨论】:

标签: excel vba


【解决方案1】:
  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2017-05-14
    • 2019-08-11
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多