VBAでIEの表の内容をエクセルに書き出す方法~
IEの表をVBAでエクセルに書き出したい!
でも、IDや名前もわからないし、どうやって抜き出すべきかわからない!
という人も多いかと思います。
そこで今回は、楽天証券の表の内容を書き出すプログラムを説明しながら、
その方法を解説したいと思います。
楽天証券の表の内容を書き出す
楽天証券の表を書き出すためのコードになります。簡単に説明すると、
①サイトを立ち上げて
②tagName=”tr”を検索 (”tr”は「行」を表します。)
③.chirdrenを用いてtrの中の子要素の「列」を取得、書き出し。
※何個列があるかわからないので、とりあえず20まで取得。
エラーが起こらないようにOn Error Resume Next入れてます。
という内容です。
Sub IE_table_output() Application.ScreenUpdating = False 'IEの起動 Dim objIE As Object Set objIE = GetObject("", "InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://www.rakuten-sec.co.jp/web/fund/find/search/result.html" ' このURLを任意に変更 ' ページの表示完了待ち。 While objIE.ReadyState <> 4 Or objIE.Busy = True DoEvents Wend On Error Resume Next '値がないとエラーが出るので、エラー回避用 I = 1 '開始行を指定 L = 0 J = objIE.document.all.Length '要素の数を知る Cells(I, 1).Value = "No" Dim A As Object For Each A In objIE.document.getElementsByTagName("tr") For L = 0 To 20 Cells(I, L + 1) = A.Children(L).innertext Next I = I + 1 'ステータスバーに進捗を表示 Application.StatusBar = I & "/" & J Next On Error GoTo 0 Cells.WrapText = False Application.ScreenUpdating = True Application.StatusBar = False End Sub
上記のプログラムを実行すると楽天証券の下記の表を、エクセルに書き出すことができたと思います。

↓エクセルに書き出される

プログラムの解説
htmlの表(テーブル)の構成
htmlの表の構成は下記のようになっております。
trが行、th,tdが列を示し、trの中にthやtdが含まれております。
この特性を利用してプログラムを書いていきます。
※ちなみにthは「見出しで太字となり中央揃い」tdは「通常の文で左揃い」の違いです。
<table> <tr> <th>行1列1</th> <th>行1列2 </th> <th>行1列3 </th> </tr> <tr> <td>行2列1</td> <td>行2列2 </td> <td>行2列3 </td> </tr> <tr> <td>行3列1</td> <td>行3列2 </td> <td>行3列3 </td> </tr> </table>
For Each A In objIE.document.getElementsByTagName("tr")
まずは、for each構文を使って、タグの名前がtrのものをAに格納します。
objIE.document.getElementsByTagName("tr").Children(”番号”) .innertext
列の要素はtrタグの中にありましたので、
A.Children(”番号”).innerhtmlでtrタグの中のテキストを一つずつ書き出していきます。
注意していただきたいことは、番号が「0」から始まることです。
ちなみに今回は、列の要素が何個あるかわからなかったので、0~20と21回繰り返しています。
また、要素がないとエラーが起きますので、On Error Resume Next で無理やり実行しています。
セルへの書き出し
trは行を表していますので、trごとにi=i+1と加算していっています。
また、子要素tdは列でしたので、子要素を進めるのと同時にL=L+1と加算してセルに書き出していっています。
おまけ:Application.StatusBar = I & "/" & J
進捗状況を確認するため、ステータスバーに進捗状況を表示させています。
記事のまとめ
この記事のまとめは下記のとおりです。
その他、VBAでIEを動かすために必要な情報をまとめています!!
コメント欄