如何用 vba select li-tag?

How to select li-tag with vba?

我在使用 vba 代码时遇到了一些问题。我想从我公司的内部网站获取一些数据到 excel-sheets 中。我已经通过不同的网站实现了更改日期和 运行 一些 for-next,最后我想将数据从网站提取到一些电子表格中。

但这让我心碎:我想在下拉字段 (li) 中 select 一个特定值(此处 "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 脚本,没有其他循环和数据内容。这样我就可以读出下拉列表中的值 - 但是我如何 select 一个(即 "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

由于来自我们的内部网,我无法post整个代码,希望您能给我一些建议。

您可以尝试使用属性 = 值 css 选择器

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

我在看到锚元素时使用了点击。

您可能需要在父 li 上设置属性 "class"、"active"; and/or setAttribute "aria-selected", True