单击HTMLInputElement,然后单击HTMLOptionElement

单击HTMLInputElement,然后单击HTMLOptionElement,html,vba,syntax,option,Html,Vba,Syntax,Option,我正在尝试编写vba代码来填写web表单并单击按钮。我在页面上循环使用各种选项标记来选择我想要的。当我到达它时,我想选择它,但我不确定它的语法 Dim htmlO As HTMLOptionElement For Each htmlO In Object.getElementByTagName("option") If Trim(htmlO.value) = "INS" Then htmlO.???? (click? select?) Exit For

我正在尝试编写vba代码来填写web表单并单击按钮。我在页面上循环使用各种
选项
标记来选择我想要的。当我到达它时,我想选择它,但我不确定它的语法

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>

选择菜单选项
毛毯公司
载波搜索
修改密码
FMCSA寄存器
反馈
主页
保险备案
停用承运人

我想选择选项“INS”。

我没有使用VBA,因此我提前表示歉意,但假设它使用与我熟悉的其他语言相同的DOM结构,请尝试:

htmlO.selected= "selected"
这就是我用javascript实现这一点的方法:)


最后起作用的是

将htmlO变暗为HTMLSELECT元素
设置htmlS=objdoc.getElementById(“菜单”)
htmlS.selectedIndex=7


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

CSS选择器:

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
这里有一个更简单的方法。使用
选项[value='INS']
的CSS选择器。 这表示选择带有
选项
标记的元素,该标记具有属性
,其值为
'INS'


CSS查询:


VBA:

通过
文档
的方法应用

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


谢谢你的回答…但它不起作用。当我执行htmlO.check时,菜单选项没有被选中。对不起,我是个傻瓜,我以为你在使用复选框。Try selected=“selected”已在我的原始响应中更新。我也尝试了htmlO.select,但它不起作用…谢谢:)
objdoc.querySelector("option[value='INS']").Selected = True