我不确定我是否正确引用了按钮。我不断得到:
运行时错误“ 438”:对象不支持此属性或方法。
这是我目前的代码:
Sub russInd()
Dim oButton As Object, HTMLdoc As Object
Dim sht1 As Worksheet, myURL As String
Set ie = CreateObject("InternetExplorer.Application")
Set sht1 = Worksheets("Day 1")
myURL = sht1.Cells(32, 2).Value
ie.navigate myURL
ie.Visible = True
Do Until ie.ReadyState = 4
DoEvents
Loop
'Locate The correct forms and buttons
Set HTMLdoc = ie.document
Set oButton = HTMLdoc.querySelectorAll("a[href='javascript:submitForm(document.forms[0].action);']")
'Check All Checkboxes
HTMLdoc.getElementByID("chkAll").Click
oButton.Click
End Sub
我正在使用的网页是:
https://indexcalculator.ftserussell.com/
这是网页代码:
我需要单击下一步按钮,我确实尝试使用
.getElementByID("CtlNavigation_lblControl")
要单击该按钮,但是只是跳过了该命令,我想它没有单击任何内容。谢谢!
答案 0 :(得分:1)
将选择器设置为此:(这意味着在父 A 元素中查找任何图像。)
Set oButton = HTMLdoc.querySelectorAll("a > img")
这是经过修改的完整代码:
Sub russInd()
Dim oButton As Object, HTMLdoc As Object
Dim sht1 As Worksheet, myURL As String
Set ie = CreateObject("InternetExplorer.Application")
Set sht1 = Worksheets("Day 1")
myURL = sht1.Cells(32, 2).Value
ie.navigate myURL
ie.Visible = True
Do Until ie.ReadyState = 4
DoEvents
Loop
'Locate The correct forms and buttons
Set HTMLdoc = ie.document
Set oButton = HTMLdoc.querySelectorAll("a > img")
'Check All Checkboxes
HTMLdoc.getElementByID("chkAll").Click
oButton.Click
End Sub
答案 1 :(得分:1)
querySelectorAll
返回一个nodelist。您可能需要querySelector
尝试
HTMLdoc.getElementById("CtlNavigation_lblControl").querySelector("a").Click
或
HTMLdoc.querySelector("CtlNavigation_lblControl a").Click
答案 2 :(得分:1)
使用以下选择器,因为它适用于所有步骤。父项中ID为a
的子项Ctlnavigation2_lblControl
元素的数量会发生变化,因此以下是一种始终可以跨页面获取所需内容的可靠方法。
HTMLdoc.querySelector("#Ctlnavigation2_lblControl [href*=action]").Click
您的错误(在注释中部分正确)是您正在尝试使用某些节点类型的方法,例如nodeList上的a
标签元素(这是querySelectorAll返回的内容)。它不返回集合。这是VBA中非常重要的区别。如果您像对集合那样尝试“每一个”,则该nodeList上的Excel将崩溃。