[三流君] [VBAで楽しく] [VBA IE 操作]
−−> No.070 InternetExplorer.application .document.all(0).innerHTML

InternetExplorer.application .document.all(0).innerHTML

※このメルマガを書いてた時期はXP+IE6でした。Set objIE = CreateObject("InternetExplorer.application")で比較的簡単にIEを起動することができました。
上で、比較的簡単にIEを起動することができますなんて言っておきながら、
現在の環境(2008年5月) Windows Vista のIE7だと、ハマってしまいます。(不評の動画解説3連発 ア.[Windows Vista IE7 CreateObjectで失敗した画像] イ.[Vista IE7 信頼済みのサイトにしてVBAからコントロールしてみた] ウ.[UserFormにIEを貼り objIEに代入してかわした方法です。])
私がよく使う好きな方法はそのままでは、Vista IE7には通用しないのかぁ、、、
原因は、Set objIE = CreateObject("InternetExplorer.application")で.Navigateすると、
Windows Vista IE7の保護モードだと新しいIEが起動して制御不能になってしまいます・・・[三流君 Vista IE7の修正でハマる(小細工で逃げる)] ← これから Vista IE7に挑戦する人は、こちらも見てください。
※※あっ、IE6はそのままサンプルが動くと思います、頭からお騒がせしてスミマセン・・
※※※最新の情報(と言っても更新遅いですが)は、[三流君VBAでIE操作・自動制御]に載せているので合わせて見てください。

メルマガ発行内容

<InternetExplorer.application .document.all(0).innerHTML>

こんにちは、三流プログラマーKen3です。 今回は、 掲示板に質問があった、 彼女のすべてをのぞきたい、全てを取得したい。 じゃなくって、 IEでHTMLソースすべてを取得したい です。 溜まっているオヤジギャグは置いといて、はじめますか? (何が溜まっているって?駄目だよ変な想像したら・・・   想像したのがたぶんあたりだけど、と回答を書かないのがKen3流の文章)

/* * 1.今回のキッカケ */

掲示板、 http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi?mode=allread&no=111&page=0 に来た質問です。※何か質問あったら遠慮なく、回答遅いけど。 --- >投稿時間:2003/05/02(Fri) 19:13 >投稿者名:nori >タイトル:はじめまして > >はじめまして。 >早速ですが、vba解説のNo.50 IE起動に関する質問があります。 > >Dim objIE As ObjectobjIE.Navigate "http://..." >Dim strHTML As String >strHTML = objIE.document.body.innerHTML > >でhtmlソースを取り出す事は出来ましたが、<body>内しか取り出せません。 >objIE.document.title >で<title>内も取り出せることは分かりましたが、<head>内すべてを取り出す事 >は出来るのでしょうか? >htmlにあまり詳しくないもので、解決しません。そもそも、<html>内は取り出 >せなくて当たり前なのでしょうか。愚問かもしれませんが、お返事よろしくお >願いします。 --- さて、やりたいことを整理して、 と思ったら、もう整理されてますね。 ・<head>内のソースを取得したい ・htmlの全てのソースを取得したいかぁ。

/* * 2.IEオブジェクトの中身を探れ(手ごわい彼女の心の中?) */

[No.50 IE起動 CreateObject("InternetExplorer.application")] ( http://www.ken3.org/backno/backno_vba11.html#50 を参照) では、IEの起動方法を書きました。 [No.52 InternetExplorer.application .document.body.innerText] ( http://www.ken3.org/backno/backno_vba11.html#52 を参照) では、 彼女(オブジェクト)の中身を探る方法を少し書きました。 それにしても、階層が深いです。 テーブル系のオブジェクトを探すが、なかなか見つからない。 (女の子じゃなくって、IEの心の中は複雑なのね、、、) 女心を探るのは下手だけど、オブジェクトの中身見るのは少しできるよね? なんて、馬鹿なこと言ってないで、ブレークポイントをはって、止めます。 いやらしい目で頭から探っていくと(ほんとは真剣な目ですよ) objIE.document.の下に、 .allなんてそれらしいのあるじゃないですか。 読者の人に見せたくないニャっとした顔で、 ? objIE.document.all(0).innerHTML とやってみると、ヘッダから情報が入ってました。 これを使えばなんとかできそうです。 下記Ken3がいやらしい目で見てたIEのオブジェクト

/* * 3..document.all(0).innerHTMLにいつも入っているのか?疑問だけど */

.document.all(0).innerHTML と 0番目にいつも入っているのか?疑問だけど、 下記のようにテストしてOKでした。
Sub ie_get_html()

    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

    'HTMLソースを取出す
    Dim strHTML As String
    strHTML = objIE.document.all(0).innerHTML  '変数に代入
    MsgBox strHTML       'テスト表示
    Debug.Print strHTML  'イミディエイトにも表示

End Sub
彼女(IEオブジェクト)の心の中は、複雑そうなので、 引き続き、いやらしい目じゃなくって真剣な目で(オイオイ) 調べてみたいと思います。

/* * 4.おわりの挨拶 */

今回のポイントは、 Ken3はエロオヤジだった じっゃなくって IEのオブジェクトの中身の探り方でした。 No.52 InternetExplorer.application .document.body.innerText http://www.ken3.org/backno/backno_vba11.html#52 にブレークポイント貼って、ウォッチで表示する画像があるので、 こっちを見ると美人をウォッチする方法がよくわかります(たぶん) 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。 ※今日はふざけすぎました、解除しないでね。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.070を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります


ページフッター(リンクや広告など)

[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・