使用VBA单击按钮不会重定向到新页面,而是在手动单击时重定向

时间:2019-02-27 21:30:48

标签: excel vba internet-explorer web-scraping

我正在与VBA合作,以自动执行重复性任务。我的应用程序有一个包含大量数据的页面(此页面至少有1000条记录)和几个按钮。 单击按钮之一应重定向到新页面。我的脚本一直等到带有记录的页面完全加载后,单击该按钮,并且单击按钮时,它应该加载新页面,但它只是加载同一页面,而不是重定向到新页面。但是当手动单击按钮时,将加载新页面。

按钮html:

<input type="image" name="btnadduser" id="btnAddUserid" src="../images/buttons/btn_add.gif" alt="Add New User" style="border-width:0px;" border="0">

要在VBA中单击此按钮,

Application.Wait (Now + TimeValue("00:00:03"))
While IE.readyState <> 4 Or IE.Busy: DoEvents: Wend    
IE.document.getElementById("btnAddUserid").Click //this is the button which is not redirecting.

我无权访问代码的实际功能。所以我不知道后台发生了什么。但是除此以外的其他按钮都可以正常工作。我应该如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

您可以尝试

1)添加点击事件并将其触发

2)使用javascript模拟点击

3)使用FireEvent“ onclick”

Option Explicit   
Public Sub PerformClick()
    Dim ie As New InternetExplorer
    With ie
        .Visible = True
        .Navigate2 "url"

        While .Busy Or .readyState < 4: DoEvents: Wend
        '#1
        Dim event_onClick As Object
        Set event_onClick = .document.createEvent("HTMLEvents")
        event_onClick.initEvent "click", True, False

        With .document.querySelector("#btnAddUserid")
             '#3
            .FireEvent "onclick"
             '#1
            .dispatchEvent event_onClick
        End With

        'Or #2
        ie.Document.parentWindow.execScript "document.querySelector('#btnAddUserid').click();"
        Stop
        .Quit
    End With
End Sub