[三流君] [VBAで楽しく] [VBA IE 操作]
−−> No.052 InternetExplorer.application .document.body.innerText

InternetExplorer.application .document.body.innerText

概要: 今回は、
プレークポイントの設定、ウォッチ式の追加、変数の中身を探る

.document.body.innerTextで、IEのテキスト表示データを取り込む
です。

※メルマガ記事ではオブジェクトの参照設定をしていませんができれば、下記を参考に参照設定してください。
[Microsoft Internet Controls,Microsoft HTML Object Library を参照設定する](このほうが開発時、操作時に楽)
また、VistaとIE7の場合は、 [IE7 操作 Vistaで失敗]も参考にしてください。

リンク 分類: [Document(文章)からデータを取得] / [Form入力処理] / [Linkリンク情報] / [Image画像情報] / [Frameフレーム処理] サンプル: [IEを使ったVBAのサンプル] / [小さなVBAでIE操作のコード]

メルマガ発行内容

やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。

<InternetExplorer.application .document.body.innerText>

こんにちは、三流プログラマー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(フレーム処理)]
サンプル・例題:[過去のメルマガ記事一覧] / [少し大きなIE操作サンプル] / [小さなコードでIE操作の動作確認]

F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[F1ヘルプ マクロ記録ほか]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、デバッグモード]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[VBA ウォッチ式とSTOPを使ってみた]・・・STOPで止め、ウォッチ式でオブジェクトの中身を確認する方法など
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話

項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。
[プログラムは心? spirit]・・・プログラマー 心・気質・魂
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話

項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。
[VBAでIE ウェブブラウザーを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[MSアクセス から エクセル を呼ぶ Excel.Application]・・・AccessからExcelを操作したりデータの書き出しなどです
[アウトルック メールの操作 Outlook.Application]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[エクセル ユーザーフォームを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[エクセルからアクセスを操作する]・・・ExcelからAccessのマクロを起動してみました、
[エクセル関係 関数、その他]・・・その他Excel関係です

Access関係:
[アクセス ユーザーフォーム/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[アクセス レポート操作]・・・レポートを操作してみました
[アクセス クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[テキストファイルの操作(Open,Close,Print,Input)]・・・普通のテキストファイルを使ったサンプルです

Blog:[三流君の作業日記]/ [objIEを使用したサンプルコードを見る]/ 広告-[通販人気商品の足跡]

質問や要望など メッセージを送る(三流君に連絡する)

三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。

感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。

あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。



[トップページへ 戻る] / [VBA TOP] / [WebBrowser IEの操作 TOPへ]