Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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响应web DOM事件_Excel_Vba_Internet Explorer - Fatal编程技术网

Excel通过VBA响应web DOM事件

Excel通过VBA响应web DOM事件,excel,vba,internet-explorer,Excel,Vba,Internet Explorer,我试图对通过Excel VBA打开的网站上的按钮单击作出响应 下面的代码试图让它作为Duckduckgo的测试工作 网页加载良好,但我似乎无法获得onclick事件,我需要这样做才能从用户将要填写的文本输入元素中获取值 选项显式 私有WithEvents IEButton作为MSHTML.HTMLInputButtonElement Public Sub Init(以MSHTML.htmlInputButtonneElement的形式命名) 设置IEButton=aButton 端接头 私有函数

我试图对通过Excel VBA打开的网站上的按钮单击作出响应

下面的代码试图让它作为Duckduckgo的测试工作

网页加载良好,但我似乎无法获得onclick事件,我需要这样做才能从用户将要填写的文本输入元素中获取值

选项显式
私有WithEvents IEButton作为MSHTML.HTMLInputButtonElement
Public Sub Init(以MSHTML.htmlInputButtonneElement的形式命名)
设置IEButton=aButton
端接头
私有函数IEButton_onclick()作为布尔值
调试。打印“单击”
MsgBox“你好”
端函数
Private Sub cmdTest\u Click()
Dim ie作为InternetExplorer,html作为HTMLDocument
将链接设置为字符串
链接=”http://www.duckduckgo.com/"
Set ie=新的InternetExplorer
与ie
.Visible=True
.导航链接
While.Busy=True或.readyState<4
多芬特
温德
设置html=.document
调暗IEB,但作为新的CLSIE按钮
ieBut.Init html.querySelector(“搜索按钮”主页)
以
显示窗口ie.hwnd,SW_显示最大化
端接头
试试这个部分

    Set html = .document
    html.queryselector("#search_form_input_homepage").Value = "Excel VBA"
    html.queryselector("#search_button_homepage").Click
在Cick的操作之前放置以下行

Range("A1").value = html.queryselector("#search_form_input_homepage").Value
试试这一部分

    Set html = .document
    html.queryselector("#search_form_input_homepage").Value = "Excel VBA"
    html.queryselector("#search_button_homepage").Click
在Cick的操作之前放置以下行

Range("A1").value = html.queryselector("#search_form_input_homepage").Value

cmdTest\u单击
完成后,其所有局部变量都将被销毁,包括
ieBut
。 如果你需要它一直挂到有人点击按钮,你需要移动它

Dim ieBut As New clsIEButton
位于模块顶部,任何子/功能之外


这里有类似的代码:

一旦
cmdTest\u单击
完成,其所有局部变量都将被销毁,包括
ieBut
。 如果你需要它一直挂到有人点击按钮,你需要移动它

Dim ieBut As New clsIEButton
位于模块顶部,任何子/功能之外

类似代码如下:

该网页加载良好,但我似乎无法获得再次点击 事件,我需要这样做才能从文本输入中获取值 用户将要填写的元素

请参考以下示例代码:

Private ieBut As clsIEButton 'global variable.
Private Sub cmdTest_Click()
    Dim ie As InternetExplorer, html As HTMLDocument
    Dim link As String
    link = "http://www.duckduckgo.com/"

    Set ie = New InternetExplorer

    With ie
        .Visible = True
        .navigate link
        While .Busy = True Or .readyState < 4
            DoEvents
        Wend

        Set html = .document
        Set ieBut = New clsIEButton

        'transfer the button element and the html document.
        ieBut.Init html.getElementById("search_button_homepage"), html

    End With

End Sub
输入值并单击搜索按钮后,VBA输出如下所示:

该网页加载良好,但我似乎无法获得再次点击 事件,我需要这样做才能从文本输入中获取值 用户将要填写的元素

请参考以下示例代码:

Private ieBut As clsIEButton 'global variable.
Private Sub cmdTest_Click()
    Dim ie As InternetExplorer, html As HTMLDocument
    Dim link As String
    link = "http://www.duckduckgo.com/"

    Set ie = New InternetExplorer

    With ie
        .Visible = True
        .navigate link
        While .Busy = True Or .readyState < 4
            DoEvents
        Wend

        Set html = .document
        Set ieBut = New clsIEButton

        'transfer the button element and the html document.
        ieBut.Init html.getElementById("search_button_homepage"), html

    End With

End Sub
输入值并单击搜索按钮后,VBA输出如下所示:


感谢您的回复。我想知道什么时候点击了按钮,这样我就可以检查用户在文本输入中输入的值。用户将如何使用代码。?他是否会使用InputBox在文本输入中键入值?用户将单击excel文档上的按钮,该按钮将加载网页,用户将在网页上完成web表单,然后单击提交按钮。这将向第三方发送POST REQUEST,但我还希望捕获用户输入的值,并在Excel中填充一些单元格。感谢您的回复。我想知道什么时候点击了按钮,这样我就可以检查用户在文本输入中输入的值。用户将如何使用代码。?他是否会使用InputBox在文本输入中键入值?用户将单击excel文档上的按钮,该按钮将加载网页,用户将在网页上完成web表单,然后单击提交按钮。这将向第三方发送POST REQUEST,但我还希望捕获用户输入的值,并在Excel中填充一些单元格。太好了,我终于开始进步了!现在,我从类中的“Set IEButton=aButton”行得到一个错误462“远程服务器计算机不存在或不可用”。你能帮个忙吗?而且,它似乎超越了默认行为,有没有办法停止过度驾驶?太好了,我终于进步了!现在,我从类中的“Set IEButton=aButton”行得到一个错误462“远程服务器计算机不存在或不可用”。你能帮忙吗?还有,它似乎超越了默认的行为,有没有办法停止过度驾驶?