2016-06-23 2 views
-1

나는이 상황에서 행운이없이 해결하기 위해 애 쓰고 있습니다. Excel에서 VBA를 사용하여 웹 사이트를 탐색합니다. 이 웹 사이트에서는 VBA를 사용하여 id가 id-01 인 div를 클릭하여 정상적으로 작동합니다. 그 div#id-01을 클릭하면 id가 id-02 인 다른 div가 생성됩니다.이 div를 클릭하고 싶습니다. id-02이있는 div를 VBA와 함께 클릭하려면 어떻게해야합니까?VBA ID가있는 동적 생성 div를 클릭하십시오.

Set IE = CreateObject("InternetExplorer.Application") 
' 
'code to navigate to site and wait for site to load 
' 

'Get div#id-01 and click on it 
Set first = IE.document.getElementById("id-01") 

'click it 
first.click 

'The following code does not work because 
Set second = IE.document.getElementById("id-02") 

second.click 
+0

을 아마 대신 요소 ID의 사용자가 사용할 수있는 [태그 이름] (https://msdn.microsoft.com/en-us/library/ms536439 (V = VS.85) .aspx)? id-01을 누른 다음 id-02를 클릭하는 대신 id-01의 "자식"으로 처리해야하는 것처럼 보입니다. – Sgdva

+0

페이지 렌더링이 끝나고 div # id-01을 클릭하기 전에, div # id-02'. 아마도 div # id-01'을'div # id-01'의 자식으로 참조하는 방법이나 ID를 대상으로하는 방법은 다르지 않을 것입니다. 왜냐하면'ID.document' 개체가' div # id-02', 객체가 id-02에 대해 알고 있다면 위의 코드가 작동 했어야합니다. –

+0

가능한 복제본 : http://stackoverflow.com/questions/11820548/is-there-a-way-in-vba-to-get-elements-produced-by-javascript. 조언은'first.click'과'Set second = ...'사이의'Application.Wait Now + TimeSerial (0,0, x)'에 대한 것이고,'x'는 몇 초입니다. –

답변

0

일반적으로 새 요소가 첫 번째 요소에 추가 된 후 문서를 다시 설정합니다.

이 시도 :

Set IE = CreateObject("InternetExplorer.Application") 

    ' 
    'code to navigate to site and wait for site to load 
    ' 
    set myDoc = IE.Document 

    Set first = myDoc.getElementById("id-01") 

    'click it 
    first.click 


    (WAIT 2 seconds) 

    set myDoc = IE.Document 

    Set second = IE.document.getElementById("id-02") 

    second.click[/code] 
관련 문제