2014-02-07 66 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