www.youtube.com
【VBA IE操作】テーブル単体を取り出す テスト 【三流君】 - YouTube
テストページ
http://ie.vba-ken3.jp/test/20161101j1j2.html
の表を取り出すには・・・
1.IE起動
CreateObject("InternetExplorer.application")
2.ページの表示
.Navigate
3.目的のテーブルを指定
.getElementsByTagName("TABLE")(0)
などで、テーブルを指定して
4.行・列のループでセット
.Rows.Length で 行数
.Rows(y).Cells.Length で 列数
.innertextでテキストを取り出せるので、
objTABLE.Rows(y).Cells(x).innertext
みたいに使用できます。
そんな流れでやっています。
何かの参考となれば・・・・
Option Explicit Sub le_test20161103_単体ページテスト() 'IE起動 Dim objIE As Object 'IEオブジェクト参照用 Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る objIE.Visible = True '見えるようにする(お約束) '.Navigate で 指定した文字列のURLを開く objIE.Navigate "http://ie.vba-ken3.jp/test/20161101j1j2.html" '表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ Do While objIE.Busy = True DoEvents '特に何もしないで.Busyの状態が変わるまで待つ Loop Do While objIE.ReadyState <> 4 DoEvents '特に何もしないで.ReadyStateの状態が4に変わるまで待つ Loop 'テーブルを探す 'タグの取出しが、.getElementsByTagName("TABLE")で 可能なので、 Dim objTABLE As Object 'TABLEの格納用 'TABLEタグを抜き先頭0番目のテーブルをセット Set objTABLE = objIE.Document.getElementsByTagName("TABLE")(0) '↑で代入したオブジェクトからテーブルデータを取り出す。 'まず、書き込み先シートに切り替え、データをクリアする Sheets("DATA").Select 'シートを切り替える Cells.Delete Shift:=xlUp 'シート全体を削除する Range("A2").Select '先頭A1を選択する、 '表をDATAシートに書き出す Dim x As Integer '列の管理 Dim y As Integer '行の管理 'Webの表をシートへ転記(代入する) For y = 0 To objTABLE.Rows.Length - 1 '行のループ For x = 0 To objTABLE.Rows(y).Cells.Length - 1 '列数分ループ ' objTABLE.rows(行).cells(列).innertext Cells(y + 1, x + 1) = objTABLE.Rows(y).Cells(x).innertext Next Next '終了処理 objIE.Quit 'IEを閉じる Set objIE = Nothing '変数の後始末 End Sub
冒頭の解説動画と同じです。
www.youtube.com
【VBA IE操作】テーブル単体を取り出す テスト 【三流君】 - YouTube