Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用vba单击网页上的按钮_Excel_Vba - Fatal编程技术网

Excel 使用vba单击网页上的按钮

Excel 使用vba单击网页上的按钮,excel,vba,Excel,Vba,我试图让一个代码正常工作,但我无法让它单击一个sumbit按钮,因为web的id没有该按钮,下面是我试图单击的html行,如何通过vba代码单击该按钮 <button type="submit" class="btn btn-default" value="Login" name="action">Submit</button> 提交 您需要一个“Microsoft Internet控件”的参考,该控件实际上是从VBA控制Internet Explorer。如果你

我试图让一个代码正常工作,但我无法让它单击一个sumbit按钮,因为web的id没有该按钮,下面是我试图单击的html行,如何通过vba代码单击该按钮

 <button type="submit" class="btn btn-default" value="Login" 
 name="action">Submit</button>
提交

您需要一个“Microsoft Internet控件”的参考,该控件实际上是从VBA控制Internet Explorer。如果你能给我网址,我可以提供更具体的帮助,但如果这不能为你解决问题,这应该会让你开始:

Public Sub ButtonClicker()
    Dim IE As InternetExplorer
    Dim website_address As String: website_address = "YOUR ADDRESS GOES HERE"
    Dim button_name As String: button_name = "action"
    Dim button_class As String: button_class = "btn btn-default"
    Dim open_in_IE As Boolean: open_in_IE = False  'Change to True if you want to see it in action
    Dim button_collection As Object
    Dim button As Object

    On Error GoTo error_handler

    If IE Is Nothing Then Set IE = New InternetExplorer
        With IE
            .Navigate website_address

            Do While .Busy
                DoEvents
            Loop

            Do While .ReadyState <> 4
                DoEvents
            Loop

            .Visible = open_in_IE
        End With

        Set button_collection = IE.Document.getElementsByName(button_name)
            Set button = button_collection(button_class)  'Inspect Locals here to see what comes through
                button.Click
            Set button = Nothing
        Set button_collection = Nothing

        IE.Quit
        Set IE = Nothing
    Exit Sub

error_handler:
    Debug.Print "IE Error: " & Err.Number & " - " & Err.Description
    If Not (IE Is Nothing) Then
        IE.Quit
        Set IE = Nothing
    End If
End Sub
Public子按钮链接器()
Dim IE作为InternetExplorer
Dim website\u address作为字符串:website\u address=“您的地址在此处”
Dim button\u name作为字符串:button\u name=“action”
尺寸按钮\u类为字符串:按钮\u类=“btn btn默认”
Dim open_in_IE As Boolean:open_in_IE=False“如果您想看到它的运行,请将其更改为True”
Dim button_集合作为对象
将按钮变暗作为对象
关于错误转到错误处理程序
如果IE为空,则设置IE=newInternetExplorer
与IE
.浏览网站地址
忙着干吧
多芬特
环
请稍等。ReadyState 4
多芬特
环
.Visible=打开(即
以
设置按钮集合=IE.Document.getElementsByName(按钮名称)
Set button=button_集合(button_类)'在此处检查局部变量,以查看结果
按钮,点击
设置按钮=无
设置按钮\u集合=无
即退出
设置IE=无
出口接头
错误\u处理程序:
调试。打印“IE错误:&Err.Number&“-”&Err.Description
如果没有,那么
即退出
设置IE=无
如果结束
端接头

您尝试过什么?请共享您的代码并解释您的问题所在。这将失败(我认为),因为您正在将一个字符串传递到集合的索引中(该字符串不能隐式转换),您还可以将两个Do While循环合并为一个,并将方法升级到.Navigate2。您也不需要将对象设置为Nothing,因为它们在子对象末尾超出范围时将取消引用。请参阅此链接: