2013-10-08 167 views
0

我想從使用Excel VBA的網站中提取表格,但表格是使用JavaScript創建的,我真的不知道該怎麼做。使用Excel VBA導入JavaScript創建的網站表格

一般來說,我提取表是這樣的:

Dim Document As Object 
Dim StatementTable As HTMLTable 

Set Document = CreateObject("HTMLFile") 

With CreateObject("msxml2.xmlhttp") 
    .Open "GET", Url, False 
    .send 
    Do: DoEvents: Loop Until .readyState = 4 
    Document.body.innerHTML = .responseText 
    .abort 
End With 

Set StatementTable = Document.getElementById("TableID") 

With StatementTable 
    For r = 0 To .Rows.Length - 1 
     For c = 0 To .Rows(r).Cells.Length - 1 

      Sheets(Destination).Cells(r + 1, c + 1).Value = .Rows(r).Cells(c).innerText 
     Next c 
    Next r 
End With 

我試着做這個鏈接類似的東西:

http://financials.morningstar.com/income-statement/is.html?t=JPM&region=USA&culture=en-US

然而,正如我所說,該表與創建JavaScript並不在本地HTML文件中。

我瀏覽的源代碼,並且看起來創建表JavaScript的HTML文件的行238-242執行:

<script type="text/javascript"> 
    var print4com = false 
    SRT_stocFund.LoadAComponent("sfcontent", "JPM", "is", "en-US","USA", "", "usa", null,{showSubTab: false}, {refresh:"", urlAppendix:"&t=XNYS:JPM&region=usa&culture=en-US&cur=USD"}); 
    var ops = ""; 
</script> 

我只是不知道如何將這些加載到VBA並將其導入到Excel中。

此外,我想避免使用Internet Explorer,如果可能的話。

感謝您提供的任何幫助。

-Ryan

+1

你想避免使用IE瀏覽器,但是使用Excel和VBA你完全沒問題? –

+1

您需要執行腳本來創建表格,所以您需要自動化IE或者找到其他方式來獲得相同的結果。 –

+2

忘記屏幕上顯示的內容並找出JavaScript從中提取數據並直接使用它可能更合理。或者只是問一個該死的API的網站 - 如果沒有API,它可能不希望你拉它的數據。 –

回答

0

VBScript和JScript共享全局命名空間等等這樣的事情應該工作:

<script type="text/javascript"> 
    var print4com = false 
    js_data = SRT_stocFund.LoadAComponent("sfcontent", "JPM", "is", "en-US","USA", "", "usa", null,{showSubTab: false}, {refresh:"", urlAppendix:"&t=XNYS:JPM&region=usa&culture=en-US&cur=USD"}); 
    var ops = ""; 
</script> 

<script type="text/vbscript"> 
    Dim vb_data = js_data 
</script> 

從VBScript導入到Excel中詳細說明了elsewhere