tableデータ抽出「tableValue」の解説

今回は、tableデータをピンポイントに抽出するサブルーチンについて解説していきます。
それでは、制御方法について確認していきましょう。

スポンサー リンク

tableデータ抽出のサブルーチン


Function tableValue(objIE As InternetExplorer, _
                    tagStr As String, _
                    row As Integer, _
                    col As Integer) As String
                    
    Dim objtag As Object

    For Each objtag In objIE.document.getElementsByTagName("table")

        With objtag
        
            If InStr(.outerHTML, tagStr) > 0 Then

                tableValue = .Rows(row).Cells(col).innerText
        Exit For
            
            End If
            
        End With

    Next

End Function

tableデータ抽出のマクロ

Sub sample()

    Dim objIE As InternetExplorer

  'InternetExplorerでテストページをIE(InternetExplorer)で起動
    Call ieView(objIE, "http://www.vba-ie.net/code/test4.html")

    Debug.Print tableValue(objIE, "URL", 2, 1)

End Sub

tableのHTML


<table>
  <tr>
   <td>InternetExplorer制御の準備(ライブラリ追加)</td>
   <td><a href="http://www.vba-ie.net/library/index.html">http://www.vba-ie.net/library/index.html</a></td>
  </tr>
  <tr>
   <td>指定したURLをIEで表示する</td>
   <td><a href="http://www.vba-ie.net/ie/navigate.html">http://www.vba-ie.net/ie/navigate.html</a></td>
  </tr>
  <tr>
   <td>プログラムのサブルーチン化</td>
   <td><a href="http://www.vba-ie.net/ie/subroutine1.html">http://www.vba-ie.net/ie/subroutine1.html</a></td>
  </tr>
  <tr>
  <td>指定URLをIEで表示するサブルーチン</td>
   <td><a href="http://www.vba-ie.net/ie/subroutine2.html">http://www.vba-ie.net/ie/subroutine2.html</a></td>
  </tr>
</table>

実行結果

http://www.vba-ie.net/ie/subroutine1.html

今回は、値を取得するために戻り値が必要となりますのでfunctionマクロで対応しています。引数は以下の4つが設定されています。

引数名データ型内容値の事例初期値省略
objIEInternetExplorerIEオブジェクトobjIE,objIE2×
tagStrStringtableタグ内の一意のキーワード文字列"URL"×
rowIntegertableの抽出したい行番号(0から)2×
colIntegertableの抽出したい列番号(0から)2×
tableValue("IEオブジェクト","tableタグ内の一意のキーワード文字列","tableの抽出したい行番号(0から)","tableの抽出したい列番号(0から)")

こちらは、全て必須項目となります。
「objIE」はオブジェクトを入力します。
「tagStr」には、tableタグに含まれる一意のキーワード文字列を入力します。「一意のキーワード」とはそこでしか使われていない文字列のことです。
探すポイントとしては、まずid属性が設定されているか確認してください。id属性は一意の属性ですので、こちらが設定されていれば簡単に取得できます。
d属性がない場合は、name属性・class属性で一意のキーワードがないか確認していきます。
「row」には、tableの抽出したい行番号(0から)を入力します。
「col」には、tableの抽出したい列番号(0から)を入力します。

それでは、1つずつコードを見ていきましょう。


For Each objTag In objIE.document.getElementsByTagName("table")
(省略)
Next

こちらは「For Each~Nextステートメント」を利用して指定したtableタグの数だけループ処理させています。


With objTag
 If InStr(.outerHTML, tagStr) > 0 Then
(省略)
 End If
End With

「Withステートメント」でobjTagを省略しています。
また、「If~Thenステートメント」でtableタグの中に一意のキーワードが含まれているかをチェックしています。
含まれている場合は次の処理へと進みます。


tableValue = .Rows(row).Cells(col).innerText

目的のtableが見つかったら「Rows・Cellsプロパティ」でセル番号を指定してinnerTextプロパティでテキストだけ抽出します。


Exit For

そして、最後に「Exitステートメント」でループを脱出して完了となります。

次の記事: VBAでIEのmetaタグデータを抽出するサブルーチン >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。