使用Excel VBA设置javascript输入值(不带选项值)
形势 我正在尝试使用Excel中的VBA自动登录和搜索网站。我能够打开IE、导航、登录并进入搜索页面。该网站有一个列表框,其中包含使用AJAX动态添加的选项。代码如下所示:使用Excel VBA设置javascript输入值(不带选项值),javascript,ajax,vba,excel,Javascript,Ajax,Vba,Excel,形势 我正在尝试使用Excel中的VBA自动登录和搜索网站。我能够打开IE、导航、登录并进入搜索页面。该网站有一个列表框,其中包含使用AJAX动态添加的选项。代码如下所示: <select id="listArray" multiple="" name="listArray" onchange="deSelectAll();" size="13" style="width: 324px"> <option value="172743306">Bob Smith (bob.
<select id="listArray" multiple="" name="listArray" onchange="deSelectAll();" size="13" style="width: 324px">
<option value="172743306">Bob Smith (bob.smith@gmail.com)</option>
<option value="116696948">Abby Hernandez (ahernandez@ymail.com)</option>
或者类似的,没有问题。我希望
getElementsByTagName
有一些属性可以用来查找显示文本(我的情况下的名称),或者有一种简单的方法来搜索代码。任何解决此问题的想法都将不胜感激。如果getElementsByTagName有效,那么querySelectorAll()也可能有效,在这种情况下,您可以执行“选择选项[name='user']”来查找选项。您可以循环列表中的选项:每个选项都有一个.Text和一个.Value属性。找到匹配的文本属性后,相应地设置该值。或者将select的selectedIndex设置为选项的索引(从零开始),使用IE.document.getelementbyid(“listArray”)
而不是IE.document.getElementsByTagName(“select”)
,并按照Tim的建议循环通过选项来获取文本和值属性。感谢您的所有评论。使用getElementByID
成功返回该框,但我不确定如何循环检查每个选项的.Text
。读了这本书,我不知道该怎么做。如何从选择中访问选项集合?
Dim s
Set s = IE.document.getElementById("listArray")
SetSelectByText s, "Bob Smith"
Sub SetSelectByText(sel, txt)
Dim l As Long, x As Long
l = sel.Options.Length
For x = 0 To l - 1
If sel.Options(x).Text Like "*" & txt & "*" Then
sel.selectedIndex = x
Exit For
End If
Next x
End Sub
Dim s
Set s = IE.document.getElementById("listArray")
SetSelectByText s, "Bob Smith"
Sub SetSelectByText(sel, txt)
Dim l As Long, x As Long
l = sel.Options.Length
For x = 0 To l - 1
If sel.Options(x).Text Like "*" & txt & "*" Then
sel.selectedIndex = x
Exit For
End If
Next x
End Sub