2017-02-28 56 views
0

我有一個用VBA編寫的程序,它會擦掉我正在使用的網站的第一個表格。我添加了一個組件,通過單擊下一個按鈕來查看下一個50個結果,從而遍歷該頁面上的所有項目。在多個表和頁面的Javascript網站上進行VBA網頁掃描

我遇到的麻煩是編碼我引用的表。我的代碼只需要網頁上的第一個表格,我需要所有的表格,但我也需要程序點擊所有結果。

這裏是我的代碼:

Sub ETFDat() 

Dim ie As Object, i As Long, strText As String 
Dim jj As Long 
Dim hBody As Object, hTR As Object, hTD As Object 
Dim tb As Object, bb As Object, Tr As Object, Td As Object, ii As Long 
Dim doc As Object, hTable As Object 
Dim y As Long, z As Long, wb As Excel.Workbook, ws As Excel.Worksheet 

Set wb = Excel.ActiveWorkbook 
Set ws = wb.ActiveSheet 

Set ie = CreateObject("InternetExplorer.Application") 
ie.Visible = True 

    y = 1 'Column A in Excel 
    z = 1 'Row 1 in Excel 
Sheets("Fund Basics").Activate 
Cells.Select 
Selection.Clear 

ie.navigate "http://www.etf.com/channels/smart-beta-etfs/channels/smart- beta-etfs?qt-tabs=0#qt-tabs" ', , , , "Content-Type: application/x-www-form-urlencoded" & vbCrLf 

Do While ie.busy: DoEvents: Loop 
Do While ie.ReadyState <> 4: DoEvents: Loop 

Set doc = ie.document 
Set hTable = doc.getElementsByTagName("table") '.GetElementByID("tablePerformance") 

ii = 1 
Do While ii <= 17 

For Each tb In hTable 

    Set hBody = tb.getElementsByTagName("tbody") 
    For Each bb In hBody 

     Set hTR = bb.getElementsByTagName("tr") 
     For Each Tr In hTR 


      Set hTD = Tr.getElementsByTagName("td") 
      y = 1 ' Resets back to column A 
      For Each Td In hTD 
       ws.Cells(z, y).Value = Td.innerText 
       y = y + 1 
      Next Td 
      DoEvents 
      z = z + 1 
     Next Tr 
     Exit For 
    Next bb 
Exit For 
Next tb 

With doc 


Set elems = .getElementsByTagName("a") 
For Each e In elems 

    If (e.getAttribute("id") = "nextPage") Then 
     e.Click 
     Exit For 
    End If 

Next e 

End With 

ii = ii + 1 
Application.Wait (Now + TimeValue("00:00:05")) 
Loop 

MsgBox "Done" 

End Sub 

回答

0

我認爲你將有一個更簡單的時間,如果你把他們的JSON文件,然後在您的VBS代碼解析它。

http://www.etf.com/etf-finder-channel-tag/Smart-Beta%20ETFs/-aum/50/50/1 
http://www.etf.com/etf-finder-channel-tag/Smart-Beta%20ETFs/-aum/50/50/2 
http://www.etf.com/etf-finder-channel-tag/Smart-Beta%20ETFs/-aum/50/50/3 

...

+0

我從來沒有使用過之前..有沒有納入我的代碼,這樣的方法嗎? –

相關問題