2015-10-02 102 views
2

這可能屬於新手愚蠢的問題。但我真的不知道從哪裏開始在VBA。我嘗試了一些不同的網絡方法,嘗試從我嘗試訪問的網站獲取數據,並且所有這些方法都失敗了。有人可以幫助我(或多或少地告訴我)如何從這個網站提取數據?將數據從網站拉入VBA

https://rotogrinders.com/projected-stats/nfl?site=fanduel

它甚至不會讓我做數據 - >導入。這是我到目前爲止。對於t = 0 To(Table.Length - 1),我一直在線卡住。

Sub test1() 
Dim appIE As Object 
Set appIE = CreateObject("internetexplorer.application") 
Dim Table As Object 
Dim t As Integer 
Dim r As Integer 
Dim c As Integer 

With appIE 
    .Navigate "https://rotogrinders.com/projected-stats/nfl?site=fanduel" 
    .Visible = True 
End With 

Do While appIE.Busy 
    DoEvents 
Loop 

Set Table = appIE.document.getElementById("proj-stats") 
For t = 0 To (Table.Length - 1) 
    For r = 0 To (Table(t).Rows.Length - 1) 
     For c = 0 To (Table(t).Rows(r).Cells.Length - 1) 

ThisWorkbook.Worksheets(1).Cells(r + 1, c + 1) = Table(t).Rows(r).Cells(c).innerText 
    Next c 
    Next r 
    Next t 

appIE.Quit 
Set appIE = Nothing 


End Sub 
+0

看看我上面有什麼。我關門了嗎? @portlandrunner – scarebear

+0

有許多瀏覽器插件可以讓您從網頁中導出表格,也許可以嘗試其中的一種來查看它是否符合您的要求。 –

回答

0

您已經關閉了,並且有幾種獲取數據的方法。我選擇提取所有行元素(HTML <TD>)並逐步完成一個簡單的循環。由於有六列,我正在使用兩個變量(r & c用於行和列)來抵消數據以正確格式化。

Set Table = appIE.document.getElementsbytagname("td") 
r = 0 
c = 0 

For Each itm In Table 
    Worksheets(1).Range("A1").Offset(r, c).Value = itm.innertext 
    c = c + 1 
    If c Mod 6 = 0 Then 
     r = r + 1 
     c = 0 
    End If 
Next itm 

結果舉例:

enter image description here


最後一個音符,有時瀏覽器沒有完成加載腳本去之前......我用騙在循環前的中斷點,等待直到它加載,然後按F5繼續執行代碼以確保它始終運行。

+0

謝謝!我現在順利運行。 – scarebear