三流君のソースコード置き場

三流プログラマーが作成したコードが置いてあります。あまり参考にならないと思いますがヨロシクお願いします。

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


広告:


[記事一覧、バックナンバーを見る]

VBA IE操作 テーブル単体を取り出す テスト

www.youtube.com
【VBA IE操作】テーブル単体を取り出す テスト 【三流君】 - YouTube


VBAからIEを操作して、
表 TABLEを取り出します。

テストページ
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