2011-08-24 5 views
1

나는 Internet Explorer에로드 된 웹 페이지의 드롭 다운 상자를 조작하기 위해 VBA (Excel)를 사용하고 있습니다. 드롭 다운 상자에는 일부 자바 스크립트가 첨부되어있어 드롭 다운 선택이 변경되면 페이지의 UI 컨트롤이 변경됩니다.Internet Explorer DOM에서 자바 스크립트를 호출하는 방법

다음 기능을 사용하여 (자동으로) 드롭 다운에서 옵션을 선택합니다. 드롭 박스 의 값을 변경하지만 UI 변경 사항을 발생시키지 않습니다. (드롭 다운 상자를 수동으로 변경할 때와 비교)

Sub selectFromDropdown(ByRef dropdown As HTMLSelectElement, ByVal optionName As String) 
    Dim opts 
    Dim opt As HTMLOptionElement 

    dropdown.Focus 
    dropdown.setCapture 
    Set opts = dropdown.children 
    For i = 1 To opts.Length 
     Set opt = opts.Item(i) 
     If opt.Text = optionName Then 
      opt.Selected = True 
      dropdown.selectedIndex = opt.Index 
      Exit For 
     End If 
    Next 
    dropdown.releaseCapture 
End Sub 

어떻게이 드롭 다운 상자에 연결된 자바 스크립트를 트리거 할 수 있습니까? 또는 일반적으로 MS Internet Explorer에서 제공하는 API를 통해 프로그래밍 방식으로 이벤트를 실행할 수 있습니까? 고맙습니다.

+0

매우 재미 있지만, 최종 하위가 아닌 그 자동화 된 모든 뒤에 힘 웹 테스트 도구! 당신은 그들에 대해 알고 있습니까? – Martin08

+1

@ Martin08, VBA + IE + 자바 스크립트는 나에게 마조히즘처럼 들립니다. 그 항목들 중 하나 *만으로도 좋습니다. 이 세 가지를 모두 합치면 내가 악몽을 꾸는 것입니다. – zzzzBov

+0

URL은 무엇입니까? – JimmyPena

답변

0

콤보 상자 값을 설정할 때 javascript 함수를 명시 적으로 호출하십시오.

하위 selectFromDropdown이 희미한는 HTMLOptionElement으로 희미한 수신 거부 옵션을 해제합니다 (HTMLSelectElement, ByVal의 Optionname 인 문자열로 드롭하는 ByRef)

dropdown.Focus 
dropdown.setCapture 
Set opts = dropdown.children 
For i = 1 To opts.Length 
    Set opt = opts.Item(i) 
    If opt.Text = optionName Then 
     opt.Selected = True 
     dropdown.selectedIndex = opt.Index 
     'Call hear javascript function. 
     Exit For 
    End If 
Next 
dropdown.releaseCapture