2013-10-30 7 views
2

다른 웹 사이트에서 데이터를 수집하려고합니다. 따라서 나는 Excel VBA를 사용하고 인터넷 탐색기를 시작합니다. 정상적인 양식을 작성할 수 있습니다. 하지만 때로는 jquery 스크립트를 사용하여 역동적 인 양식을 작성해야합니다.jQuery 양식을 다시 계산하기위한 Vba & InternetExplorer.Application의 이벤트 발생

첫 번째 2 개의 필드가 채워지고 이벤트가 발생하는 경우 양식은 모든 입력 필드 (드롭 다운 메뉴) 만 활성화합니다.

내 스크립트에서 양식을 채울 수는 있지만 "재 계산"이벤트는 발생하지 않습니다.

양식을 마우스로 수동 작성하면 작동합니다. 이 이벤트를 어떻게 시뮬레이트 할 수 있습니까?

이 내 엑셀 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 
+0

답장을 보내 주셔서 감사합니다. . ie.document.getElementById ("Article_ArticleDetails_AutoMakeId") 값 = "9"(BMW) 후속 드롭에로드 된 데이터가 있어야 (MODELL : 문제는 전 값으로 드롭 마르크를 채울 때,) : ie.document.getElementById ("Article_ArticleDetails_AutoModelId") 마우스를 사용하면 데이터가 드롭 다운에로드됩니다. AutoModelId (Modell). 해당 데이터가 해당 드롭 다운에로드되었다는 이벤트를 발생시킬 수 있습니까? 감사합니다. – user2929630

답변

3

감사합니다 (드롭 다운 아약스 요청이 채워지는 기다리고되지 않음)

지금 내가 해결책을 가지고 있습니다.

1

양식을 사용할 수 드롭 다운을 가지고 있지만 당신이 거짓으로 장애인 설정할 수 있습니다 및 추가 처리를 할 수 있도록 그것의 옵션 요소가 제공했다. 모든

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" 

감사 : 도와

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 
+1

@ user2929630 http://auto.ricardo.ch/selling/_vehicleregistration/?Article_ArticleDetails_AutoRegistrationMonth=1&Article_ArticleDetails_AutoRegistrationYear=2013&_=1383159004821에서이 URL로 직접 전화 할 수도 있습니다. – Santosh