我一直在网络自动化项目中工作,当我在其中一个搜索框中输入值时,我正在使用的当前网页会自动更新。但是,当我使用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。
答案 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