3

我正在尝试编写 vba 代码来填写网络表单并为我单击按钮。我正在循环浏览option页面上的各种标签以选择我想要的标签。当我到达它时,我想选择它,但我不确定语法。

Dim htmlO As HTMLOptionElement
For Each htmlO In Object.getElementByTagName("option")
    If Trim(htmlO.value) = "INS" Then
       htmlO.????  (click? select?)
        Exit For
    End If
Next

以下是网页中的 HTML:

<select gtbfieldid="40" id="menu" name="pv_choice">
<option selected="selected" value="ZZZ">Choose Menu Option
</option><option value="BL_COMP">Blanket Companies
</option><option value="CARR_SEARCH">Carrier Search
</option><option value="PASSWORD">Change Password
</option><option value="FED_REG">FMCSA Register
</option><option value="FEEDBACK">Feedback
</option><option value="HOME">Home Page
</option><option value="INS">Insurance Filing
</option><option value="OOS_LIST">Out Of Service Carriers
</option></select>

我想选择“INS”选项。

4

4 回答 4

2
Dim StrFindText  as string
Dim htmlSelect As HTMLSelectElement
Dim htmlItemOption As IHTMLOptionElement

Set htmlSelect  = Object.getElementById("menu")
StrFindText = "INS"

For i = 0 To htmlSelect.options.length - 1
    htmlItemOption = htmlSelect.options(i)
    ' UCase(htmlItemOption.text) = UCase(StrFindText) ' if find text options
    If UCase(htmlItemOption.value) = UCase(StrFindText) Then
       htmlItemOption.selected = True
       Exit For
    End If
Next i
于 2012-06-26T19:41:02.273 回答
1

我没有使用 VBA,所以我提前道歉,但假设它使用与我熟悉的其他语言相同的 DOM 结构,请尝试:

htmlO.selected= "selected"

这就是我在javascript中实现这一点的方式:)

高温高压

于 2010-03-03T18:32:23.970 回答
1

CSS 选择器:

这是一个更简单的方法。使用 CSS 选择器option[value='INS']。这表示选择带有option标签的元素,该标签的属性value值为'INS'


CSS查询:

询问


VBA:

CSS选择器通过.querySelector.document

objdoc.querySelector("option[value='INS']").Click  

或者

objdoc.querySelector("option[value='INS']").Selected = True 
于 2018-06-25T07:55:26.517 回答
0

最终奏效的是……

将 htmlO调暗为 HTMLSelectElement
设置 htmlS = objdoc.getElementById("menu")
htmlS.selectedIndex = 7

我必须参考整个菜单并选择要选择的菜单,而不是选择单个选项。

于 2010-03-03T19:02:21.600 回答