You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可点击指定HTML提交按钮的正确VBA代码(附报错尝试代码)

正确点击目标HTML提交按钮的VBA代码

你之前代码的问题说明:

  • doc.getElementsByClassName("btn btn-primary").Item(1).Click:VBA中DOM元素集合的索引从0开始,而非1;部分旧IE版本对多类名空格格式的getElementsByClassName支持不佳。
  • idoc.querySelector("input[type*=submit]").Click:变量名前后不一致(混用了doc和idoc),若变量名统一,该选择器逻辑本身可行。
  • doc.getElementsByValue("Submit").Click:DOM API中不存在getElementsByValue方法,直接调用会报错。

可行的正确代码:

方法1:使用querySelector(推荐,简洁可靠)

利用CSS选择器精准匹配元素,只要选择器能唯一定位按钮即可:

' 确保doc是已正确获取的HTMLDocument对象
doc.querySelector("input.btn.btn-primary[type='submit'][value='Submit']").Click

简化版(根据页面实际情况选择,只要能唯一匹配):

doc.querySelector("input.btn-primary").Click
doc.querySelector("input[value='Submit']").Click

方法2:使用getElementsByClassName(兼容旧IE)

注意索引从0开始,若多类名格式不生效则手动筛选:

' 直接调用(若浏览器支持多类名空格分隔)
doc.getElementsByClassName("btn btn-primary").Item(0).Click

手动筛选版本:

Dim targetBtn As Object
For Each targetBtn In doc.getElementsByClassName("btn")
    If targetBtn.className = "btn btn-primary" And targetBtn.Value = "Submit" Then
        targetBtn.Click
        Exit For ' 找到后退出循环
    End If
Next

方法3:遍历input标签筛选

通过标签名获取所有输入框,再匹配属性:

Dim inputEle As Object
For Each inputEle In doc.getElementsByTagName("input")
    If inputEle.Type = "submit" And inputEle.Value = "Submit" And inputEle.className = "btn btn-primary" Then
        inputEle.Click
        Exit For
    End If
Next

内容的提问来源于stack exchange,提问作者rohit rajendran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:35:28