2016-09-12 186 views
0

我遇到了循環div元素的問題,以及我不知道如何去做。代碼非常有效。使用VBA循環遍歷DIV元素

本質上,我有權訪問一個網站,並希望通過鏈接從它下載內容。我的代碼看起來並找到元素X並繼續單擊該元素。

問題是,元素X會重複多次,例如.getElementByClassName(「AssetLinkText」)會在HTML代碼中重複幾次,從而導致提取下載第一個「AssetLinkText」。

我在想,這個解決方案是通過HTML進行搜索,即爲每個循環尋找帶有內部文本「下載完整證券列表」的標籤。但是,我不確定如何做到這一點。

Sub anotherAttempt() 

'DECLARE VARIABLES 
Dim browser As InternetExplorer 
Dim document As HTMLDocument 
Set browser = New InternetExplorer 
Dim div 

'MAKE VIS AND NAV 
browser.Visible = True 
browser.Navigate "https://etf.deutscheam.com/GBR/ENG/ETF/LU1221100792/-/DAX-UCITS-ETF-(DR)-Income" 

'MULTITHREAD 
Do While browser.Busy And Not browser.readyState = READYSTATE_COMPLETE 
     DoEvents 
Loop 

'PERFORM ACTIONS 
Set document = browser.document 
Dim anchorElement As HTMLAnchorElement 
Set anchorElement = document.getElementsByClassName("AssetLinkText") 
'CHECK FOR HOLDINGS LINK 
anchorElement.Click 

End Sub 
+1

VBA和vb.net是不一樣,這個功能[似乎不存在](https://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument (v = vs.110).aspx)在vb.net我不'看到任何JavaScript的。 –

+0

'Set anchorElement = document.getElementsByClassName(「...」)'給你一個元素列表,這意味着'anchorElement.Click'永遠不能工作。您不能單擊元素列表。你的問題不清楚你想達到什麼目的。 – Tomalak

+0

查看getElementsByClassName的返回值,它將返回一個集合,然後使用它來循環集合。 Microsoft Internet控件上的幫助文件和Internet是很好的信息來源。 –

回答

0

這項工作與我。

Dim divs As Object 
Dim div As Object 

// get all div element in DOM 
Set divs = IE.document.getElementsByTagName("div") 

// loop through all div elements 
For Each div In divs 
    // do things here 
    // e.g. div.innerHTML = "hello" 
Next div 
+0

請添加您的解決方案的解釋。請參閱https://stackoverflow.com/help/how-to-answer – user7294900