2

我正在尝试从不同的网站收集数据。因此,我正在使用 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
4

2 回答 2

3

感谢您的帮助

现在我有了解决方案:

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"

谢谢大家。

于 2013-10-31T06:31:29.733 回答
1

对于提供的链接,表单已禁用下拉列表,但其中包含选项元素,因此您可以将禁用设置为 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
于 2013-10-30T18:45:01.090 回答