使用没有Option值的Excel VBA设置javascriptinput值

情况

我试图在Excel中使用VBA自动login和search网站。 我可以打开IE,导航,login,并进入search页面。 该网站有一个列表框,其中有使用AJAXdynamic添加的选项。 代码如下所示:

<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> 

大约有100个名字,而且dynamic的列表可以随时更改。 在渲染的网页上,用户只需点击名称/电子邮件地址,然后点击提交button。

问题

我知道如何设置框的.Value ,如果我有该选项的数值。 但是,它是由网站分配,对我来说毫无意义。 我希望能够使用VBA给定名称和/或电子邮件地址来设置选项。 例如,我希望能够input“Bob Smith”,并且可以searchVBA或find该名称并从那里获取选项值。 我search了SO和Google,但没有运气。 我可以find的假设,你有select的价值,或者只能从页面源获取它。

对于我有select价值的其他网站,我使用了:

 Set objCollection = IE.document.getElementsByTagName("select") While i < objCollection.Length If objCollection(i).Name = "user" Then objCollection(i).Value = userName End If Wend 

或类似的没有问题。 我希望getElementsByTagName有一些属性,我可以用它来查找显示文本(在我的情况下的名称),或者将有一个简单的方法来search代码。 任何想法来解决这个将不胜感激。

 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