如何用vba选择li标签



我在使用vba代码时遇到了一些问题。我想把公司内部网站上的一些数据整理成excel表格。我已经实现了更改日期,并通过不同的网站为下一个运行一些,最后我想将网站中的数据提取到一些电子表格中。

但这让我崩溃了:我想在下拉字段(li(中选择一个特定的值(此处为"B"(并更新网站。

这是内部网站的一部分:

<div class="dropdown btn-group">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
<span class="dropdown-text">B</span>
<span class="caret"></span>
</button><ul class="dropdown-menu" role="menu">
<li class="" aria-selected="false">
<a data-action="A" class="dropdown-item dropdown-item-button">A</a>
</li>
<li aria-selected="true" class="active">
<a data-action="B" class="dropdown-item dropdown-item-button">B</a>
</li>
<li aria-selected="false" class="">
<a data-action="C" class="dropdown-item dropdown-item-button">C</a>
</li>
<li aria-selected="false" class="">
<a data-action="-1" class="dropdown-item dropdown-item-button">All</a>
</li>
</ul>
</div>

这里是一个简短的vba脚本,没有其他循环和数据内容。有了它,我可以读出下拉列表中的值,但我如何选择一个(即"B"(并更新页面?

Sub GetData()
Dim IE As New InternetExplorer, html As HTMLDocument
Dim elem As Object, data As String
With IE
.Visible = True
.navigate "site from intranet"
Do While .readyState <> READYSTATE_COMPLETE: Loop
Set html = .document
End With
data = ""
For Each elem In html.getElementsByClassName("dropdown-menu")(0).getElementsByTagName("li")
data = data & " " & elem.innerText
Next elem
Range("A1").Value = data
IE.Quit
End Sub

由于它来自我们的内联网,我无法发布整个代码,希望你能给我一些建议。

您可以尝试使用attribute=value css选择器

ie.document.querySelector("[data-action=B]").click

当我看到锚定元素时,我会使用单击。

您可能需要在父li上设置Attribute"class"、"active";和/或setAttribute"aria-selected",True

最新更新