2014-02-07 32 views
0

我是Excel VBA的新手,我给了一些代码来玩。我成功修改了一次,但后来我试图再次修改它,它不会拉动正确的信息。这可能是因为我不确定桌子ID?我不明白这个例子中的所有代码......这可能是另一个问题。无论如何,我试图从this page拉动历史价格表。它提取一些数据,但不是正确的数据。任何帮助,将不胜感激。谢谢!Excel 2010 VBA - 从网站上拉桌子

这里是我当前的代码:

Sub GrabHistData() 

    Dim Ptrtbl As Long, r As Long, c As Long 
    Dim htm As Object 
    Dim elemCollection As Object 

    Set htm = CreateObject("htmlFile") 

    With CreateObject("msxml2.xmlhttp") 
     .Open "GET", "http://finance.yahoo.com/q/hp?s=TWTR&a=04&b=30&c=2012&d=01&e=7&f=2014&g=d", False 
     .send 
     htm.body.innerhtml = .responsetext 
    End With 

    Set elemCollection = htm.getElementsByTagName("TABLE") 

    Ptrtbl = 1 
    For Each elem In elemCollection 
     Ptrtbl = Ptrtbl + 1 
     If elem.ID <> "yfncsumtab" Then GoTo Nxtelem 
     With elemCollection(Ptrtbl) 

       For c = 0 To (.Rows(r).Cells.Length - 1) 
        Cells(r + 1, c + 1) = .Rows(r).Cells(c).innertext 
       Next c 

     End With 
     Exit For 
Nxtelem: 
    Next elem 

End Sub 
+2

会[这](HTTP://计算器.com/questions/8798260/html-parsing-of-cricinfo-scorecards)help? –

+3

该网页上有一个“下载到CSV”链接,您可以直接在Excel中使用'http://ichart.finance.yahoo.com/table.csv?s=TWTR&a=04&b=30&c=直接打开文件2012&d = 01&e = 7&f = 2014&g = d&ignore = .csv'作为路径(与您试图从中擦除的URL大致相同) –

+0

啊,好主意。我非常喜欢firefox元素搜索选项。我现在也看到,csv文件方法可能更容易。谢谢! – ZubaZ

回答

0

如果你想坚持当前的做法,这对我的作品......

Sub GrabHistData() 
    Dim Ptrtbl As Long, r As Long, c As Long 
    Dim htm As Object 
    Dim elemCollection As Object 

    Set htm = CreateObject("htmlFile") 

    With CreateObject("msxml2.xmlhttp") 
     .Open "GET", "http://finance.yahoo.com/q/hp?s=TWTR&a=04&b=30&c=2012&d=01&e=7&f=2014&g=d", False 
     .send 
     htm.body.innerhtml = .responseText 
    End With 

    Set elemCollection = htm.getElementsByTagName("td") 
    For Each itm In elemCollection 
     If itm.classname = "yfnc_tabledata1" Then 
      ActiveCell = itm.innertext 

      If ActiveCell.Column = 7 Then 
       ActiveCell.Offset(1, -6).Select 
      Else 
       ActiveCell.Offset(0, 1).Select 
      End If 
     End If 
    Next 
End Sub