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

IE起動 CreateObject("InternetExplorer.application")

メルマガ発行内容

<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系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.050を読んだ満足度(評価)は?
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に流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・