将数据从网站拉入VBA

时间:2015-10-02 22:31:26

标签: excel vba excel-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

1 个答案:

答案 0 :(得分:0)

您很接近,有几种方法可以获取数据。我选择提取所有行元素(HTML <TD>)并逐步完成一个简单的循环。由于有六列我使用两个变量(r&amp; 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继续执行代码到确保它一直运行。