テーブル要素から データを抜き出したい
Excel VBAでIE自動制御では、Web上の表(テーブル要素)からデータを抜き出す処理も多いです。
■テーブル要素を抜き出したい
・ヤフオクから、落札相場のデータを取得したい
・ヤフオクから、出品データの動向を探りたい
・株価の値上がり率や値下がり率上位の、データを取得したい
・特定の株の時系列の株かを取得したい
・ヤフオクから、落札相場のデータを取得したい
・ヤフオクから、出品データの動向を探りたい
・株価の値上がり率や値下がり率上位の、データを取得したい
・特定の株の時系列の株かを取得したい
テーブル要素から データを抜き出すサンプルコード
トヨタ自動車株式会社(証券コード7203)の時系列の株価を取得します。
サンプルでは時系列の一部しか取得しません。
aタグの次へボタンを押すことで、さらに過去のデータも取得可能です。
'■Webの表を取得するサンプル
Public Sub call_sample_table_data_get()
Dim objIE As InternetExplorer
Dim tr As HTMLTableRow
Dim th As HTMLTableCell
Dim td As HTMLTableCell
Dim i As Long: i = 1
Dim j As Long: j = 1
'■IEを起動
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
'■指定したURLに飛び、Webサイトの表示を待つ
objIE.navigate "https://info.finance.yahoo.co.jp/history/?code=7203.T"
Call Call_IE_WaitTime
'■テーブルデータを取得 tbodyタグの2(1)番目のデータのtrタグを取得
For Each tr In objIE.document.getElementsByTagName("tbody")(1).getElementsByTagName("tr")
'■■thタグを取得(タイトル行)
For Each th In tr.getElementsByTagName("th")
Cells(i, j) = th.innerText
j = j + 1
Next th
'■■tdタグを取得(データ行)
For Each td In tr.getElementsByTagName("td")
Cells(i, j) = td.innerText
j = j + 1
Next td
'■■列(j)をリセットし、行(i)を+1する
i = i + 1
j = 1
Next tr
End Sub
注意点
- こちらのコードだけでは動作しません。
下記の読み込み待ちのパーツ化したコードが必要です。
VBAでIE操作「ブラウザの読込待ち」処理をパーツ化する【エクセルマクロ】 - テーブルタグ( tr th td )はHTMLを少し理解する必要があります。
tr (Table Row)
表の横一行。trタグ内にth要素やtd要素が存在。
th(Table Header)
表の見出しセル。thタグ内に見出しテキストが存在。
td(Table Data)
表の値セル。tdタグ内に値のテキスト(もしくは数値)が存在。
表の横一行。trタグ内にth要素やtd要素が存在。
th(Table Header)
表の見出しセル。thタグ内に見出しテキストが存在。
td(Table Data)
表の値セル。tdタグ内に値のテキスト(もしくは数値)が存在。



コメント