|
概要: |
リンク 分類:
[Document(文章)からデータを取得]
/ [Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル:
[IEを使ったVBAのサンプル]
/ [小さなVBAでIE操作のコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
<IEを使用して、Web上の表をExcelへ>
どうも、三流プログラマーのKen3です。 今回は、 IEを使用して、Web上の表をExcelに取り込む処理 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ そんな感じの処理を作成してみたいと思います。 http://www.ken3.org/p/7/office-026.lzh に今回のサンプル保存されてます。 あわせてみてください。/* * 1. 今回のキッカケ */
メールで下記の質問をもらいました。 ----- >私は、IEのテーブル部分をマウスで範囲選択しコピー、そ >れをExcelに貼り付けています。これで、セルスタイル >のデータになります。 >次に、Excelデータをアクセステーブルに追加貼付け >しています。これら一連の手作業をVBAで自動的にやりた >いのですが、できれば、連続的に例えば同種で複数のページ >を自動的に取り込めたらと思うのですが。 ----- 要望は、Accessのテーブルへだけど、 今回は、途中のIE --> Excelへの落とし込みにチャレンジしてみます。/* * 2.IE Elementオブジェクト(タグに対応した各要素)を探る */
IEのオブジェクトの要素を探ってみます。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sub ie_test_click()
Dim objIE As Object 'IEオブジェクト参照用
Dim objTAG As Object
Dim y As Integer
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/g/index.html"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'
y = 2
'.All のデータをループする
For Each objTAG In objIE.document.all
Cells(y, "A") = objTAG.tagName
Cells(y, "B") = objTAG.innerHTML
Cells(y, "C") = objTAG.innerTEXT
Cells(y, "D") = objTAG.outerHTML
Cells(y, "E") = objTAG.outerTEXT
y = y + 1
Next
End Sub |
Sub ie_test_click()
Dim objIE As Object 'IEオブジェクト参照用
Dim objTAG As Object
Dim y As Integer
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/cnt/test.asp"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'データを削除する
Rows("3:1000").Select
Selection.Delete Shift:=xlUp
'3行目から書き込む
y = 3
'.body のデータをループする
For Each objTAG In objIE.document.body.all
Cells(y, "A") = objTAG.tagName
Cells(y, "B") = objTAG.innerHTML
Cells(y, "C") = objTAG.innerTEXT
Cells(y, "D") = objTAG.outerHTML
Cells(y, "E") = objTAG.outerTEXT
y = y + 1
Next
End Sub |
さらに下の<TABLE>のアイテムを探ると、
ITEM8なんですが、その下にもALLの階層があって、
さらにアイテムを探すと、テーブルの中身が取れます。
Item8は、.all 28個のアイテムを持っていて、
なんて感じで、テーブル内のデータを探れそうです。
Sub ie_make_table_test()
Dim objIE As Object 'IEオブジェクト参照用
Dim objTAG As Object 'TAGのオブジェクトを代入
Dim y As Integer
Dim x As Integer
Dim objTableItem As Object 'TABLE内のITEM検索用
'インターネットエクスプローラーのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True '見えるようにする(お約束)
'文字列で指定したURLに飛ぶ
objIE.Navigate "http://www.ken3.org/cgi-bin/cnt/test.asp"
'表示終了まで待つ
Do While objIE.Busy = True
'何もしないループ(笑)
DoEvents
Loop
'.body のデータをループする
For Each objTAG In objIE.document.body.all
'テーブルのタグを探す
If objTAG.tagName = "TABLE" Then
'新規ブックを追加する
Workbooks.Add
'カウンタの初期化
y = 0 '行カウンタ
'テーブル内のITEMでループする
For Each objTableItem In objTAG.all
If objTableItem.tagName = "TR" Then
y = y + 1 '行カウンタを+1
x = 1 '列カウンタを1(左端にする)
End If
If objTableItem.tagName = "TD" Then
'テキストデータをセットする
Cells(y, x) = objTableItem.innerText
x = x + 1 '列カウンタを+1(次にする)
End If
Next
End If
Next
End Sub |
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
|
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
|
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。