2016-05-31 15 views
0

多くのSubs/Functionsを使用して私の問題を解決しようとしました。私はどのようにHTML - > URLからテーブルを抽出するように解決策を探しています - そのページ上のテーブルに名前やIDのタグがない場合、クラスタグによって解決されます。Htmlからテーブルからテーブルを抽出する

ソースHTML:www.nbp.pl/home.aspx?f=/kursy/kursya.html https://d3higte790sj35.cloudfront.net/images/mg/xq/f16c888645b8ce4212b641de2441c7aa.jpeg

VBA spliting results from html imported table into excel
Excel VBA: get content from online HTML table

など...

答えて

0

このあなたのために働くはずです:

Sub Tester() 

    Dim IE As Object 
    Dim tbls, tbl, trs, tr, tds, td, r, c 

    Set IE = CreateObject("internetexplorer.application") 

    IE.Navigate "www.nbp.pl/home.aspx?f=/kursy/kursya.html" 

    Do While IE.Busy = True Or IE.readyState <> 4: DoEvents: Loop 

    Set tbls = IE.Document.getElementsByTagName("table") 

    Set tbl = IE.Document.getElementsByTagName("table")(31) 
    Set trs = tbl.getElementsByTagName("tr") 

    For r = 0 To trs.Length - 1 
     Set tds = trs(r).getElementsByTagName("td") 
     'if no <td> then look for <th> 
     If tds.Length = 0 Then Set tds = trs(r).getElementsByTagName("th") 

     For c = 0 To tds.Length - 1 
      ActiveSheet.Range("A2").Offset(r, c).Value = tds(c).innerText 
     Next c 
    Next r 

End Sub 

このコードはy画像に示されているように、リンクのou Tabela nr 103/A/NBP/2016 z dnia 2016-05-31テーブルテーブルはCell A2から表示されます。

これは@TimWilliamsがあなたの質問に記載された質問hereに回答したのと同じコードです。

+0

はたくさんありがとう、しかし、私はいくつかの数字で "" 文字を得るいけません。 :3 –

+0

@ R.Michaelあなたは 'Kursśredni'コラムについて話していますか?特定の行はありますか? – Mrig

+0

はい、私はそれについて話しています。 @mrig Btw。私は他のページで試しました、私はちょうど20ページ目のテーブルを選んでスクラップしようとしました。 (LOL) site:https://www.kraken.com/charts 変更: 行14to:Set tbl = IE.Document.getElementsByTagName( "table")(20) ) Line15でエラーが発生します。 –

0

コードと新しいページ私はあなたの投稿の下で話していました。

`サブクラーケン()

Dim IE As Object 
Dim tbls, tbl, trs, tr, tds, td, r, c 

Set IE = CreateObject("internetexplorer.application") 

IE.Navigate "https://www.kraken.com/charts" 

Application.Wait Now + TimeSerial(0, 0, 1) 

Set tbls = IE.Document.getElementsByTagName("table") 

Set tbl = IE.Document.getElementsByTagName("table")(20) 
Set trs = tbl.getElementsByTagName("tr") 

For r = 0 To trs.Length - 1 
    Set tds = trs(r).getElementsByTagName("td") 
    'if no <td> then look for <th> 
    If tds.Length = 0 Then Set tds = trs(r).getElementsByTagName("th") 

    For c = 0 To tds.Length - 1 
     ActiveSheet.Range("J1").Offset(r, c).Value = tds(c).innerText 
    Next c 
Next r 

End Subの 「DataTables_Table_1`

関連する問題