[三流君] [VBAで楽しく] [VBA IE 操作]
−−> No.050 IE起動 CreateObject("InternetExplorer.application")

IE起動 CreateObject("InternetExplorer.application")

概要: Set objIE = CreateObject("InternetExplorer.application")で比較的簡単にIEを起動することができました。
初めのスタートはここからでした。(ここから長い道のりで、まだ途中なんだけど・・・)

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

リンクの大分類:[Form入力処理] / [Linkリンク情報] / [Image画像情報] / [Frameフレーム処理]
サンプル・例題: [IE操作を使ったサンプル] / [主に小さなIE操作サンプルコード]

メルマガ発行内容

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

<IE起動 CreateObject("InternetExplorer.application")>

こんにちは、三流プログラマーKen3です。

今回は、
IEを起動して、指定したページを表示
~~~~~~~~~~~~~~を軽く書きたいと思います。

普通に業務でVBAやってるとあまり関係無いので、
へぇ〜、そうなんだぁ程度に、気楽に読んでください。

サンプルファイルは、
http://www.ken3.org/vba/lzh/vba050.lzh
に
test050-book.xlsが保存されています。
遊んでみてください。

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

HPにアクセスランキングなんて付けると、
なぜか気になってしまう、、、そんな小物の自分に気が付く(笑)

パソコン立ち上げたら、メールチェック、危ない質問メールがなかったら、
カウント数を見に行ってしまう。

http://www.ken3.org/cgi-bin/lime/limemgr.cgi ---- 種類別
http://www.ken3.org/cgi-bin/lime2/limemgr.cgi --- バックナンバー別

で、数字を見て、テキストファイルに
  07   09   10   14   19   21
M 814  835  842  871  926  944
B 1428 1439 1446 1500 1614 1640
と書き込んで、おっ2時間の間に30人来てるよとか見て書き込んでます。

なんか笑ってしまうよね。

チョット前行った要望アンケートで、
( http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi?mode=allread&no=31&page=0 )
IEのコントロールなどオブジェクト関係 4 人 7 % 
と、4人の読者の要望があったので、
今回、IEの起動をやってみたいと思います。

少数意見を拾うって、三流君らしくっていいんだけどさぁ、
VBAもっと詳しく解説しろ 17 人 30 % 
↑~~~~~~~~~~~~~~~の大多数の3割の意見には、対応してるの?

ギク、、、バックナンバー見なおして、弱いところを補足しなきゃイケナイヤ。

*やってほしい特集あったら、メール・掲示板に書いてください。

/*
 * 2.IEの起動は簡単
*/

IEの起動は簡単で、
Sub ie_test()

    Dim objIE    As Object  'IEオブジェクト参照用

    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")
    
    objIE.Visible = True '見えるようにする(お約束)

End Sub

ExcelやAccessの起動でお世話になっている、
CreateObjectを使用して、
"InternetExplorer.application"
を作成してます。

その後、
objIE.Visible = True '見えるようにする(お約束)
で、プロパティの可視をTrueにして、表示してます。

 ←実行画面

/*
 * 3.指定したURLに飛ぶ
*/

無事、起動ができたら、今度は指定したページに飛ばしたいです。
私のメインページ、 http://www.ken3.org/ に飛ばすには、

.Navigate メソッドを使います
(全然関係無いけど、ネットスケープNavigator って頭に浮かんだ)

Sub ie_go_ken3()

    Dim objIE    As Object  'IEオブジェクト参照用

    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")
    
    objIE.Visible = True '見えるようにする(お約束)

    '文字列で指定したURLに飛ぶ
    objIE.Navigate "http://www.ken3.org/"

End Sub

使い方は簡単で、
objIE.Navigate "http://www.ken3.org/"
と、文字列で飛びたい場所を指定してるたけです。

 ←実行画面

/*
 * 4.HTMLのソースを取り込む
*/

さて、IE起動、ページの移動、と順調?に来たので、
次は、アクセスカウンターの数値を取りこみたいんだけど、
どうしましょう?

う〜ん、、、あまり考えててもしょうがないので、
今回は、HTMLのソースから取ることにします。

HTMLのソースは、埋まっていて、
.document.body.innerHTML
で取出せます。
また、補足のポイントがあって、
読みこみ前に.document.body.innerHTMLを参照するとエラーが発生するので、
.Busy プロパティを見て、読み込み中、読み込み完了を判断します。

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.body.innerHTML  '変数に代入
    MsgBox strHTML       'テスト表示
    Debug.Print strHTML  'イミディエイトにも表示

End Sub

なんか、いきなり長くなったけど、ポイントは、
Do While objIE.Busy = True   'ビジー、読み込み中の間
で、.Busy = True読み込み中を判断してます。
ずっと読み込み中だとイヤなので、
If time10 < Now() Then   '10秒経過したか?
    MsgBox "タイムアウトです"
    Exit Sub
End If
と、10秒後をチェックして、10秒経ったら関数を抜けてます。

strHTML = objIE.document.body.innerHTML  '変数に代入
で、ソースを変数に代入して、
MsgBox strHTML       'テスト表示
Debug.Print strHTML  'イミディエイトにも表示
と、確認表示してます。

Debug.Printで、下記のように表示されてます。
<TR>
<TH colSpan=2>計</TH>
<TD align=right><B>1,073</B></TD>
<TD><BR></TD></TR></TBODY></TABLE><BR><BR>
<DIV align=right>

ここから、計の文字を探して、1,073を取出せば、OKですね。

説明が長くなりそうなので、
計の文字を探して、1,073を取出しは、次回ループとInStr関数にします。

  ←デバック画面

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

今回は、
・IEの起動
・指定ページに飛ぶ
・HTMLのソースを取出す
でした。

サンプルファイルは、
http://www.ken3.org/vba/lzh/vba050.lzh
に
test050-book.xlsが保存されています。

IEのコントロールも簡単、ハマるでしょ?
また、使い方によっては、いろいろと変な処理もできそうです。
*掲示板荒らしとか自動広告クリックとか、へんな方向に使わないでね。。。

何か素朴な疑問などあったら、メール、掲示板に気軽に書いてください。

拾い読みして、
1つでも何かの参考となれば幸いです。

Excel/Access大好き、三流プログラマーKen3でした。

ページフッター リンクや広告、質問送信など

三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。

[三流君 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へ]