使用vba从Internet Explorer中的下拉框中选择项目

时间:2016-02-24 19:58:02

标签: excel vba internet-explorer

以下值代表网站上的组合框/组合列表。我正在尝试使用VBA从下拉列表中选择项目#3。我尝试了几件事,但我没有选择所说的项目。我曾尝试在Google和Stack上寻找解决方案,但却找不到任何可行的方法。

<DIV id=ext-gen256 class="x-layer x-combo-list x-combo-list-small"  style="FONT-SIZE: 10px; HEIGHT: 92px; WIDTH: 113px; POSITION: absolute; LEFT: 744px;       Z-INDEX: 12007; TOP: 235px; VISIBILITY: visible">

<DIV id=ext-gen257 class=x-combo-list-inner style="HEIGHT: 90px; WIDTH: 111px">

<DIV class="x-combo-list-item" _nodup="30829" viewIndex="0">Select</DIV>
<DIV class="x-combo-list-item" _nodup="30829" viewIndex="1">Item 1</DIV>
<DIV class="x-combo-list-item" _nodup="30829" viewIndex="2">Item 2</DIV>
<DIV class=""x-combo-list-item" _nodup="30829" viewIndex="3">Item 3</DIV>
<DIV class="x-combo-list-item" _nodup="30829" viewIndex="4">Item 4</DIV></DIV></DIV>

我使用了以下代码的几个变量来尝试选择有问题的项目(即项目#3),或者使用.value =&#34;项目3和#34;但这不起作用。输入/分组框中的文本值更改为正确的值,但由于某种原因,表单不会相应地应用过滤器。但是,如果我在物理上键入&#34;项目3&#34;在然后输入/重组框然后提交表格,它可以工作。

Dim inputE As MSHTML.HTMLHtmlElement
Set inputE = IE.document.getElementsByClassName("x-combo-list-item")
If inputE.innerText = "Item 3" Then
    inputE.Select
End If

这似乎不起作用。任何帮助是极大的赞赏。我一直试图在数字上解决这个问题。

2 个答案:

答案 0 :(得分:0)

Dim el As MSHTML.HTMLHtmlElement, els

Set els = IE.document.getElementsByClassName("x-combo-list-item")

For each el in els

    If el.innerText = "Item 3" Then
        Debug.Print el.innerText
        el.click
        Exit For
    End If

Next el

答案 1 :(得分:0)

所以我想出了如何做到这一点。这是多么痛苦大声笑。

Dim inputElement0 As MSHTML.HTMLButtonElement
Set inputElement0 = IE.document.getElementById("ext-gen255")

    If inputElement0.HasChildNodes = True Then
    MsgBox True
    Else
    MsgBox False
    End If

这有助于我确定哪些元素有子元素(正如我认为对象名称所示,可能构成下拉列表中的子项)然后..

inputElement0.FirstChild.NextSibling.NextSibling.click

和中提琴!选择“第3项”。谢谢你的帮助! :P