VBA当前支持哪些CSS选择器?
早在2021年5月19日,我就最近(4月-5月21日)对VBA当前支持哪些CSS选择器?,vba,css-selectors,mshtml,queryselector,Vba,Css Selectors,Mshtml,Queryselector,早在2021年5月19日,我就最近(4月-5月21日)对mshtml.dll和后期绑定引用相关接口的可疑更改写了Q&A。这是第二部分,如果你愿意的话 在此之前,在诸如和之类的问题中,我已经指出了缺乏对带有mshtml.dll的各种CSS选择器的支持,特别是在以下方面。在上述问题中,我强调了nth-child()和nth-of-type()没有针对MSHTML实现 通常,如前所示,不受支持的选择器语法会导致: 运行时错误“-2140143604(8070000c)”:无法完成 错误8070000c
mshtml.dll
和后期绑定引用相关接口的可疑更改写了Q&A。这是第二部分,如果你愿意的话
在此之前,在诸如和之类的问题中,我已经指出了缺乏对带有mshtml.dll
的各种CSS选择器的支持,特别是在以下方面。在上述问题中,我强调了nth-child()
和nth-of-type()
没有针对MSHTML
实现
通常,如前所示,不受支持的选择器语法会导致:
运行时错误“-2140143604(8070000c)”:无法完成
错误8070000c导致的操作
我预计会出现一些问题,因为与Internet Explorer(IE)
(与MSHTML
相关的)相关的各种版本/平台不再受支持-请参阅我的。我没有预料到的
查找支持的CSS选择器的最新改进。以以下示例为例:
Option Explicit
''Required references:
'' Microsoft HTML Object Library
Public Sub CssTest()
Const URL = "https://books.toscrape.com/"
Dim html As MSHTML.HTMLDocument
Set html = New MSHTML.HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.send
html.body.innerHTML = .responseText
End With
Debug.Print html.querySelector("meta:nth-of-type(2)").outerHTML
End Sub
在4月至5月21日之前,由于使用了未实现的语法,这可能会出错。
现在,在我的设置中,我在5月初(最晚)看到了对mshtml.dll
的更新,我得到的结果与通过自动Internet Explorer实例运行的结果相同,该实例已经得到支持:
<meta name="created" content="24th Jun 2016 09:29">
反馈:
OS Name Microsoft Windows 10 Pro
Version 10.0.19042 Build 19042
System Type x64-based PC
Microsoft® Excel® 2019 MSO (16.0.13929.20206) 32-bit (Microsoft Office Professional Plus)
Version 2104 Build 13929.20373
mshtml.dll file 11.00.19041.985
ieframe.dll file 11.0.19041.964
与之前的问答一样,如果您对设置的任何反馈没有/没有看到这些更改,我将不胜感激。我将在此添加反馈,供其他人参考。tl;dr; <> P>对CSS选择器和<代码>元素.QueReleStudio> <代码>有更大的支持(允许在代码< > QuestS选择器(ALL)调用中有更大的灵活性。这大大增强了<代码> MsHTML<代码>类,在CSS选择器方面,使它与<>代码> SeleBasic < /C> >。
动机:
OS Name Microsoft Windows 10 Pro
Version 10.0.19042 Build 19042
System Type x64-based PC
Microsoft® Excel® 2019 MSO (16.0.13929.20206) 32-bit (Microsoft Office Professional Plus)
Version 2104 Build 13929.20373
mshtml.dll file 11.00.19041.985
ieframe.dll file 11.0.19041.964
一段时间以来,我一直想写一份受支持的选择器列表,因为缺乏与VBA相关的文档,以及学习什么有用什么不有用的反复尝试性质。这一最新的变化促使我这么做,并包括那些目前支持在其中使用CSS选择器的库
注意事项:
OS Name Microsoft Windows 10 Pro
Version 10.0.19042 Build 19042
System Type x64-based PC
Microsoft® Excel® 2019 MSO (16.0.13929.20206) 32-bit (Microsoft Office Professional Plus)
Version 2104 Build 13929.20373
mshtml.dll file 11.00.19041.985
ieframe.dll file 11.0.19041.964
之前和之后:
OS Name Microsoft Windows 10 Pro
Version 10.0.19042 Build 19042
System Type x64-based PC
Microsoft® Excel® 2019 MSO (16.0.13929.20206) 32-bit (Microsoft Office Professional Plus)
Version 2104 Build 13929.20373
mshtml.dll file 11.00.19041.985
ieframe.dll file 11.0.19041.964
传统上,就支持CSS选择器的库而言,VBA中CSS选择器的表现力如下:
到目前为止,Selenium实现了最多的CSS选择器
当前状态:
OS Name Microsoft Windows 10 Pro
Version 10.0.19042 Build 19042
System Type x64-based PC
Microsoft® Excel® 2019 MSO (16.0.13929.20206) 32-bit (Microsoft Office Professional Plus)
Version 2104 Build 13929.20373
mshtml.dll file 11.00.19041.985
ieframe.dll file 11.0.19041.964
我认为已实现的选择器的当前状态如下(为图像质量感到抱歉,即使您单击以放大表格-请参阅以获得最清晰的表格视图):
我也把它作为一个简化的HTML插入,所以你可以点击超链接。请点击代码插入下面的运行代码片段,然后是<强>全页<强>链接。道歉,表很大,我甚至没有覆盖所有可想到的选择器-只有我认为可能经常使用的主要选项。插入一个FANC。y表使我超出了身体字符限制,所以我们到了。对于一个奇特的表,请看这个-新支持的是阴影
VBA:有效的CSS选择器2021-05-30
VBA:有效的CSS选择器2021-05-30
图案
代表
描述
水平仪
Microsoft HTML对象库(MSHTML)
Microsoft Internet Explorer控件(SHDocVw)
Selenium类型库(Selenium)
评论
*
任何元素
2.
✔
✔
✔
E
E型元素
1.
✔
✔
✔
E[foo]
具有“foo”属性的E元素
2.
✔
✔
✔
E[foo=“bar”]
“foo”属性值与“bar”完全相等的E元素
2.
✔
✔
✔
E[foo~=“bar”]
一种E元素,其“foo”属性值是一组以空格分隔的值,其中一个值正好等于“bar”
2.
✔
✔
✔
E[foo^=“bar”]
一个E元素,其“foo”属性值正好以字符串“bar”开头
3.
✔
✔
✔
E[foo$=“bar”]
一个E元素,其“foo”属性值以字符串“bar”结尾