使用vba和InternetExplorer.Application触发事件以重新计算jquery表单

我正在尝试从不同的网站收集数据。 因此,我正在使用excel vba并启动Internet Explorer。 我可以填写正常表格。 但有时我必须用后面的jquery脚本填写动态表单。

如果填写前2个字段并触发事件,则表单将仅启用所有输入字段(下拉菜单)。

所以我的脚本能够填写表格,但不能解雇所需的“重新计算”事件。

如果您使用鼠标手动填写表单,它可以正常工作。 我该如何模拟这个事件?

这是我的excel vba脚本:

Sub test_fill_form() Dim url1 As String Dim url2 As String Dim url3 As String url1 = "https://auto." url2 = "ar" url3 = "do.ch/selling/?step=1&uniqueid=8a7d2327-f426-4df7-8291-d6b55fc62e3c" Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True apiShowWindow ie.hwnd, SW_MAXIMIZE ie.navigate url1 & "ric" & url2 & url3 While ie.readyState  4: DoEvents: Wend ie.document.all("Article_ArticleDetails_AutoRegistrationMonth").Click ie.document.getElementById("Article_ArticleDetails_AutoRegistrationMonth").value = "1" ie.document.getElementById("Article_ArticleDetails_AutoRegistrationYear").value = "2013" End Sub 

谢谢你的帮助

现在我有了解决方案:

 ie.Document.getElementById("Article__").Click ie.Document.getElementById("Article_ArticleDetails_").Focus ie.Document.getElementById("Article_ArticleDetails_").Value = "9" 'This will run the java script / fire the recalc event ie.Document.parentWindow.execScript "registrationUpdate()", "JavaScript" 

谢谢大家。

对于提供的链接,表单已禁用下拉列表但其中包含选项元素,因此您可以将disabled设置为false并进行进一步处理。 (下拉列表不等待ajax请求被填充)

 Sub test_fill_form() Dim url1 As String Dim url2 As String Dim url3 As String url1 = "https://auto." url2 = "ar" url3 = "do.ch/selling/?step=1&uniqueid=8a7d2327-f426-4df7-8291-d6b55fc62e3c" Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True 'apiShowWindow ie.Hwnd, SW_MAXIMIZE ie.navigate url1 & "ric" & url2 & url3 While ie.readyState <> 4: DoEvents: Wend ie.document.all("Article_ArticleDetails_AutoRegistrationMonth").Click ie.document.getElementById("Article_ArticleDetails_AutoRegistrationMonth").Value = "1" ie.document.getElementById("Article_ArticleDetails_AutoRegistrationYear").Value = "2013" ie.document.getElementById("Article_ArticleDetails_AutoMakeId").disabled = False ie.document.getElementById("Article_ArticleDetails_AutoModelId").disabled = False ie.document.getElementById("Article_ArticleDetails_AutoFuel").disabled = False End Sub