2016-06-23 5 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.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] 
関連する問題