我无法在下拉列表Web VBA中选择多个项目

问题描述 投票:1回答:2

我试图从内部网页填写表单。我设法突出显示我想要选择的下拉列表中的元素,但不是同时。我想在列表中选择三个这是我的代码:

Sub GetLTRTable()

    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.application")

    ie.Visible = True
    ie.navigate "myurl"

    Do Until ie.ReadyState = READYSTATE_COMPLETE
      DoEvents
    Loop


    Dim Fields As Object

    Set Fields = ie.Document.all.Item("ADFields")
        Fields.Checked = True

    Dim organization As Object

    Set organization = ie.Document.all.Item("Org")
        organization.selectedindex = 0
    Dim Modality As Object
        Set Modality = ie.Document.getElementsByName("Modality")(0)
        With Modality.Value = "'GDXE'"
             Modality.Value = "'ABUS'"
             Modality.Value = "'A&S'"
        End With

    ie.Document.getElementsByName("Action").Item(1).Click

这是源代码(请注意,由于有很多模态,我刚刚提取了一个提取):

<select name="Modality" multiple="" size="4"><option value="'ALL'" selected="">ALL</option>
<option value="'A&amp;S'">A&amp;S</option>
<option value="'ABUS'">ABUS</option>
<option value="'ACS'">ACS</option>
<option value="'ANES'">ANES</option>
</select>

谢谢您的帮助

Corentin

html vba list web-scraping dropdown
2个回答
0
投票

如果要按值使用,请使用attribute = value css选择器

With ie.document
    .querySelector("[value='ABUS']").Selected = True
    .querySelector("[value='GDXE']").Selected = True
End With

这应该证明是一种快速选择器方法。

另外,使用正确的页面等待:

While ie.Busy Or ie.readyState < 4: DoEvents: Wend

0
投票

在这种情况下,您无需更改Modality的值,但将选项设置为“selected”:

Modality.getElementsByTagname("option").item(0).selected = "selected"

© www.soinside.com 2019 - 2024. All rights reserved.