我有正确的代码导航到我想开始填充下拉列表和字段等的网站。在@Bond的建议之后,我一直在尝试的代码是:
Sub GetQuote()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate ("website")
IE.Visible = True
Do
DoEvents
Loop Until IE.readystate = 4
Dim e
Set e = IE.document.getElementsByClassname("id of button")(1)
e.Click
Application.Wait (Now + TimeValue("00:00:02"))
Do
DoEvents
Loop Until IE.readystate = 4
Dim z As Object
Set z = IE.document.getElementbyid("vehicleYearOfManufactureList")
z.SelectedIndex = 4
End Sub
这用于使用值2012填充第一个下拉列表,但现在我只是在需要对象时遇到运行时错误。可能是因为之前点击的链接曾经在同一个当前窗口中打开,现在它以某种方式打开一个全新的窗口?我只是对相同的代码如何工作感到困惑,然后不起作用,假设它没有对它引用的源代码进行任何更改。
在此错误的调试中突出显示的行是:Set z = IE.document.getElementbyid(“vehicleYearOfManufactureList”)。根据我在下面发表的评论,它是“运行时424:对象”所需的错误
答案 0 :(得分:0)
你可以通过几种方式做到这一点。如果您知道该项目的索引,则可以使用<select>
元素的SelectedIndex
属性直接设置该索引。在您的情况下,"2012"
是下拉列表中的第4项:
Set e = IE.document.getElementbyid("vehicleYearOfManufactureList")
e.SelectedIndex = 4
或者,您可以迭代下拉列表中的所有<option>
元素,找到您要查找的值,然后将其Selected
属性设置为True
:
Set e = IE.document.getElementbyid("vehicleYearOfManufactureList")
Dim o
For Each o In e.Options
If o.Value = "2012" Then
o.Selected = True
Exit For
End If
Next