【问题标题】:VBA Select Item from List in Internet ExplorerVBA 从 Internet Explorer 的列表中选择项目
【发布时间】:2020-11-17 14:25:11
【问题描述】:

我正在尝试创建一个可以在网页上执行某些任务的宏。我正在努力的是从下拉列表中选择一个选项。

这是(部分)我的 VBA 代码:

Sub stackoverflow()

' ***** Dims for VBA *****
Dim objIE As SHDocVw.InternetExplorer
Dim ieDoc As MSHTML.HTMLDocument
Dim testURL As String
' ***** END ***** 

' ***** Dim Buttons*****
Dim StatusFld As MSHTML.HTMLInputElement
' ***** END *****

testURL = "https://test.com"


'Create Internet Explorer Object
Set objIE = New SHDocVw.InternetExplorer

'Navigate to URL
objIE.navigate testURL

'Wait until page has loaded up
Do Until objIE.readyState = READYSTATE_COMPLETE: Loop

'Get document object
Set ieDoc = objIE.document
objIE.Visible = True

'***** Button IDs *****
Set statusFld = ieDoc.all.Item("apprverStatusCode")
'***** END *****

'THIS IS THE ROW WITH THE ERROR:
objIE.document.getElementById(statusFld).Value = "Rejected"

所以使用上面的代码,我得到“运行时错误'424' - 需要对象”。

我也试过这个,也没有成功:

statusFld.Value = "Rejected"

这是网站的源代码:

<select id="apprverStatusCode" data-code="GROUP_STATUS" data-servicecode="{"preview":"20501","download":"20502"}"
>
<option value="ALL">All</option>
<option value="Rejected">Rejected</option>
<option value="Approved">Approved</option>
</select>

任何想法为什么这不起作用?

【问题讨论】:

  • getElementById 需要一个 id 而不是一个对象。

标签: javascript excel vba internet-explorer


【解决方案1】:

objIE.document.getElementById("apprverStatusCode").Value = "Rejected"

但这不是选择元素的方式。您需要遍历选项并向要选择的选项添加“已选择”属性,然后将其从您不选择的选项中删除。

Dim oOptions As MSHTML.IHTMLElementCollection
Dim oOption As MSHTML.IHTMLOptionElement

Set oOptions = objIE.document.getElementById("apprverStatusCode").getElementsByTagName("option")

For Each oOption In oOptions
    If oOption.Value = "Rejected" Then
        oOption.Selected = True
    Else
        oOption.Selected = False
    End If
Next oOption

我没有测试过这段代码,所以不确定数据类型是否正确/是否可以在 for each 中工作。

https://stackoverflow.com/a/38658524/212869,它看起来比我的干净一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多