|
概要:
Set objIE = CreateObject("InternetExplorer.application")で比較的簡単にIEを起動することができました。 |
リンクの大分類:[Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル・例題:
[IE操作を使ったサンプル]
/ [主に小さなIE操作サンプルコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
こんにちは、三流プログラマー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(フレーム処理)] | |
|
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。