概要:
今回は、 |
リンク 分類:
[Document(文章)からデータを取得]
/ [Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル:
[IEを使ったVBAのサンプル]
/ [小さなVBAでIE操作のコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
こんにちは、三流プログラマーKen3です。 今回は、 InternetExplorer.application オブジェクト の、.document.body.innerText 表示内容を軽く書きたいと思います。 へぇ〜、そうなんだぁ程度に、気楽に読んでください。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba052.lzh に test052-book.xlsが保存されています。 遊んでみてください。 /* * 1.今回のキッカケ */ [No.50 IE起動 CreateObject("InternetExplorer.application")] ( /vba/backno/vba050.html を参照) で、 Set objIE = CreateObject("InternetExplorer.application") で、インターネットエクスプローラーのオブジェクトを作り、 strHTML = objIE.document.body.innerHTML '変数に代入 でHTMLのソースを取出す。 <TR> <TH colSpan=2>計</TH> <TD align=right><B>1,073</B></TD> <TD><BR></TD></TR></TBODY></TABLE><BR><BR> ここから、計の文字を探して、1,073を取出せば、OKですね。 と、ここまで、やりました。 テーブルのタグを管理している部分があるか、 チェックして遊んでました。 *今後、やってほしい特集あったら、メール・掲示板に書いてください。 /* * 2.デバックで止める、ウォッチで中身を見る */ あんまり好きじゃないけど、 ブレークポイントを設定し、デバックで止めて、オブジェクトを見てみます。 ~~~~~~~~~~~~~~~~ Sub ie_stop() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) '文字列で指定したURLに飛ぶ objIE.Navigate "http://www.ken3.org/cgi-bin/lime/limemgr.cgi" 'デバックで止める MsgBox "OK?" End Sub この処理の、MsgBox "OK?"の行に設定したいので、 右クリック、設定・解除 -- ブレークポイントを選択し、設定します。 ←参考画面 次に変数を見たいのでウォッチ式を追加します。 追加方法は、 Dim objIE As Object 'IEオブジェクト参照用 など、変数を定義している場所で、 objIEをドラック、右クリックしてウォッチ式の追加を選択します。 ←参考画面 /* * 3.実行して、オブジェクトの中身を探る */ ブレークポイントの設定 変数objIEをウォッチする準備が整ったので、 実行して、変数の中身を探ってみます。 実行すると、ブレークポイントの場所で止まります。 当たり前だろ、そのために設定したんでしょアナタが。 そうでしたね。 ブレークポイントで止まってからは、 飲み会に誘った女の子みたいに逃げないので 落ち着いて中身をチェックしましょう。 (飲み会で、逃げられてるみたいだなぁ、この書き方だと(笑)) ウォッチウインドウの変数名の横+をクリックして中身を探って行きます。 ←参考画面 それにしても、階層が深いです。 テーブル系のオブジェクトを探すが、なかなか見つからない。 (女の子じゃなくって、IEの心の中は複雑なのね、、、) 途中で、innerTextなんてのを見つけたので、 中身を確認するために、となりのイミディエイトウインドウで、 ? objIE.document.body.innerText と中身を聞いてみた(アクセスしてみた。) ←参考画面 ? objIE.document.body.innerText [戻る] アクセス集計一覧 以下は当サイトのアクセス集計です。 リンク部をクリックすると該当ページへジャンプします。 順位項目カウント統計 1VBA系411 25.3% 2総合案内のページ(TOP)302 18.6% 3VBA系バックナンバー目次215 13.2% 4コンビニ166 10.2% 5愚痴系バックナンバー目次138 8.5% 6ASP系のメルマガ122 7.5% 7ASP系バックナンバー目次94 5.8% 8愚痴92 5.7% 9VB.NET(有料版)30 1.8% 10有料版メルマガ(TOP)24 1.5% 11Officeで作る(有料版)15 0.9% 12ASPで作るGame(有料版)14 0.9% 計1,623 と詰まったテキストが表示されました。 こっちのほうが<XXX>とタグが付いてないので、 使い易そうです。(ケースにもよるけどね) 目的のテーブル関係のオブジェクトは見つからなかったのですが、 ネタになりそうな.innerTextプロパティを拾ったので、 中断を解除します(ブレークで止めてた処理を継続し終わらせる) ←参考画面 /* * 4..document.body.innerText で取り出してみた */ さっそく、調べたプロパティ.innerTextを使って、 テキストを抜き出し表示してみました。 Sub ie_get_itext() 'VBA052で解説 Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) 'ランキングのページに飛ぶ objIE.Navigate "http://www.ken3.org/cgi-bin/lime/limemgr.cgi" '表示されるまで待つ、10秒後にエラーを判断する Dim time10 As Date '時刻格納用 time10 = DateAdd("s", 10, Now()) '現在から10秒後を計算 Do While objIE.Busy = True 'ビジー、読み込み中の間 DoEvents If time10 < Now() Then '10秒経過したか? MsgBox "タイムアウトです" Exit Sub End If Loop 'innerTextを取出す Dim strTEXT As String strTEXT = objIE.document.body.innerText '変数に代入 Debug.Print strTEXT 'イミディエイトにも表示 'UserFormを開く(確認用) frmINFO.txtINFO.Value = strTEXT 'HTMLを代入 frmINFO.Show 'フォームを開く End Sub ポイントは、 ~~~~~~~~~~~ Dim strTEXT As String strTEXT = objIE.document.body.innerText '変数に代入 で、変数代入後、 いつものMsgBoxだとツマラナイので、 確認用のユーザーフォームを作成し、 frmINFO.txtINFO.Value = strTEXT 'HTMLを代入 frmINFO.Show 'フォームを開く とフォームに表示してみました。 /* * 5.おわりの挨拶 */ 今回は、 ・プレークポイントを設定、ウォッチ式の追加、変数の中身を探る ・.document.body.innerTextで、IEのテキスト表示データを取り込む でした。 サンプルファイルは、 http://www.ken3.org/vba/lzh/vba052.lzh に test052-book.xlsが保存されています。 いろいろなWebサイトから、データをExcelやAccessにもって来れそうですね。 何か素朴な疑問などあったら、メール、掲示板に気軽に書いてください。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。 ---------------------------------- 関連項目(ただのバックナンバー紹介) ---------------------------------- [No.50 IE起動 CreateObject("InternetExplorer.application")] ( /vba/backno/vba050.html を参照) では、IEの起動方法を書きました。 [ イミディエイト ウインドウ と Debug.Print ] ( http://www.ken3.org/vba/iwind.html を参照 ) で、イミディエイト ウインドウの説明を少し。 [ プロパティ、メソッドを探る方法 ] ( http://www.ken3.org/vba/excel-help.html を参照 ) で、プロパティ、メソッドを探る方法の説明を少し行いました。 時間があったら、あわせてみて下さい。
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。