如何使用VBA触发事件以更新网页?

时间:2018-02-07 20:47:03

标签: jquery vba excel-vba internet-explorer excel

我一直在网络自动化项目中工作,当我在其中一个搜索框中输入值时,我正在使用的当前网页会自动更新。但是,当我使用VBA代码在搜索框中输入值时,不会触发更新页面的事件。这是迄今为止的代码:

Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate "https://www.hacienda.go.cr/tica/web/hdbaranc.aspx"

Do Until objIE.Busy = False And objIE.readyState = 4
    DoEvents
Loop

objIE.document.getElementById("vVNCMINI").Value = partida & "00"
objIE.document.getElementById("vVNCMFIN").Value = partida & "00"
'Fire the event here

到目前为止,我在搜索框中使用了.Click,并在此处发布了onChange事件:Excel VBA & IE 11 - Unable to refresh page after selecting value in a dropdown,但都没有效果。那么,任何想法我能做什么?

编辑:我尝试过的功能是使用Application.SendKeys并在搜索框上发送回车。但是,这仅在objIE.visible = True时有效,并且仅在调试时将其设置为True。我希望将其设置为False,然后将回车键发送到Excel工作簿,而不是IE。

1 个答案:

答案 0 :(得分:2)

尝试以下示例。通过手动触发事件,我正在使用IE11。我稍微清理了一下代码,并且我对值进行了硬编码,因为我不确定变量partida的来源。

修改

如果onChange事件由于某种原因不起作用,请尝试以下代码。它将提交表单数据。这应该会触发新的页面加载。

<强>代码

Private Sub SOExample()
    Dim IE As InternetExplorer
    Set IE = New InternetExplorer

    With IE
        .Visible = True
        .navigate "https://www.hacienda.go.cr/tica/web/hdbaranc.aspx"

        Do Until .Busy = False And .readyState = 4
            DoEvents
        Loop

        .Document.getElementById("vVNCMINI").Value = "1002"
        .Document.getElementById("vVNCMFIN").Value = "12400"

        'Submit the form
        .Document.getElementsByTagName("form")(0).submit
    End With

End Sub