VBA从Internet Explorer中的列表中选择项目



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

这是我的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>

有什么想法为什么不起作用吗?

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它看起来比我的干净一点。

最新更新