繁体   English   中英

如何让VBA提交JavaScript表单?

[英]How do I get VBA to submit a javascript form?

我不确定我是否正确引用了按钮。 我不断得到:

运行时错误“ 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")

要单击按钮,但是只是跳过了该命令,我想它什么也没点击。 谢谢!

将选择器设置为此:(这意味着在父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

querySelectorAll返回一个节点列表 您可能需要querySelector

尝试

HTMLdoc.getElementById("CtlNavigation_lblControl").querySelector("a").Click

要么

HTMLdoc.querySelector("CtlNavigation_lblControl a").Click

使用以下选择器,因为它适用于所有步骤。 ID为Ctlnavigation2_lblControl的父级Ctlnavigation2_lblControl a元素的数量发生a变化,因此以下是一种始终可以跨页面获取所需内容的可靠方法。

HTMLdoc.querySelector("#Ctlnavigation2_lblControl [href*=action]").Click

你的错误,因为在注释部分正确的,是你要使用某些节点类型的方法,例如, a标签元件上的节点列表(这是什么querySelectorAll回报)。 它不返回集合。 这是VBA中非常重要的区别。 如果您像对集合那样尝试“每一个”,则该nodeList上的Excel将崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM