読者より、下記の書き込みをいただきました。(2007/10/08 20:23:39)
MSHTMLに参照設定して、以下コードを実行すると、
WebBrowser1オブジェクトのDocumentオブジェクトに補完が聞きますよ。
その後、VB、VBAのオブジェクトブラウザでMSHTMLのActiveXに関する情報が手に入ります。
--
dim objHTML as MSHTML.HTMLDocument
set objHTML = WebBrowser1.Document
.....
set objHTML = Nothing
--
あと、デバッグ中にobjHTMLをウォッチすると、いろいろわかります。
CreateObjectは簡単で、
Sub ie_test()
Dim objIE As Object 'IEオブジェクト参照用
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True '見えるようにする(お約束)
End Sub
↑とにかくコレを貼り付けて実行してみてください。↓IEの起動は、ここの解説がはじめの一歩として、わかりやすいと思う。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/mar06/hey0313.mspx
↑イロイロなサイズを指定して起動できたりするみたい。
サンプルを走らせながらが一番いいのかなぁ?
マニュアルや調査することも非常に大切なのですが、入り口で挫折しないためには、楽しくなくっちゃ???
サンプルを見ながら動かしていけば、なんとなく感覚がつかめてくるので、あとはエラー処理を含めた丁寧なプログラムを組んでいく、そんな感じがいいのでは???
過去の解説はこちら→[過去の解説 vba_ie20070520.asp]もあわせてみてください。
ここから↓新しく書き直した解説です。(↑もしかして書き直さない方がよかった(笑))
Sub ie_test_Navigate()
Dim objIE As Object 'IEオブジェクト参照用
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True '見えるようにする(お約束)
'.Navigate で 指定した文字列のURLを開く
objIE.Navigate "http://ken3-info.blog.ocn.ne.jp/"
End Sub
ねっ、簡単に目的のURLを開くことができたでしょ。
<FORM ACTION="http://www.ken3.org/cgi-bin/test/test029-3.asp" METHOD="POST">
<b>感想:</b>
<INPUT TYPE="TEXT" NAME="MEMO" SIZE=20><br>
<b>メルマガ区分選択:</b><br>
<INPUT TYPE="RADIO" NAME="KUBUN" VALUE="ASP">三流君ASPで遊ぶ<br>
<INPUT TYPE="RADIO" NAME="KUBUN" VALUE="VBA" CHECKED>三流君VBAで楽しく<br>
<INPUT TYPE="RADIO" NAME="KUBUN" VALUE="GUCHI">プログラマー愚痴<br>
<INPUT TYPE="HIDDEN" NAME="NO" VALUE="0">
<INPUT TYPE="SUBMIT" VALUE="書 込">
<INPUT TYPE="RESET" VALUE="クリア">
</FORM>
<hr>
Sub ie_test_data_set()
Dim objIE As Object 'IEオブジェクト参照用
Dim time5 As Date '5秒待ちに使う。
Dim strCOMMENT As String 'コメントの入力
'INPUTBOXでデータをもらう
strCOMMENT = InputBox("Ken3へ一言?", "", "" & Now)
Application.WindowState = xlMinimized '入力後Excelを最小化、下に下げる
'IEを起動する
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True '見えるようにする(お約束)
'.Navigate で 指定したURLを開く
objIE.Navigate "http://ken3-info.blog.ocn.ne.jp/test/2007/05/post_4291_1.html"
'手抜きで5秒待つ(読み込み待ちを単純に5秒とする)
time5 = DateAdd("s", 5, Now()) '5秒後を計算する
Do While True '無限ループ
DoEvents
If time5 < Now() Then Exit Do '5秒後に抜ける
Loop
'htmlドキュメント フォーム(0番目) アイテム(MEMO)に転記(代入)する。
objIE.Document.Forms(0).Item("MEMO").Value = strCOMMENT
End Sub
ポイントは、ie_test_form_submit()
Dim objIE As Object 'IEオブジェクト参照用
Dim time5 As Date '5秒待ちに使う。
Dim strCOMMENT As String 'コメントの入力
'INPUTBOXでデータをもらう
strCOMMENT = InputBox("Ken3へ一言?", "", "" & Now)
Application.WindowState = xlMinimized '入力後Excelを最小化、下に下げる
'IEを起動する
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True '見えるようにする(お約束)
'.Navigate で 指定したURLを開く
objIE.Navigate "http://ken3-info.blog.ocn.ne.jp/test/2007/05/post_4291_1.html"
'手抜きで5秒待つ(読み込み待ちを単純に5秒とする)
time5 = DateAdd("s", 5, Now()) '5秒後を計算する
Do While True '無限ループ
DoEvents
If time5 < Now() Then Exit Do '5秒後に抜ける
Loop
'htmlドキュメント フォーム(0番目) アイテム(MEMO)に転記(代入)する。
objIE.Document.Forms(0).Item("MEMO").Value = strCOMMENT
'フォーム(0番目)を .Submit する
objIE.Document.Forms(0).Submit '送信処理
End Sub
※過去のメルマガ→[VBAからIE操作 .document.forms(0).Submit でフォーム送信処理]も見て参考となれば・・・Sub ie_test_busy()
Dim objIE As Object 'IEオブジェクト参照用
Dim strCOMMENT As String 'コメントの入力
'INPUTBOXでデータをもらう
strCOMMENT = InputBox("Ken3へ一言?", "", "" & Now)
Application.WindowState = xlMinimized '入力後Excelを最小化、下に下げる
'IEを起動する
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True '見えるようにする(お約束)
'.Navigate で 指定したURLを開く
objIE.Navigate "http://ken3-info.blog.ocn.ne.jp/test/2007/05/post_4291_1.html"
'表示終了まで待つ .Busy(忙しい)間ループ
Do While objIE.Busy = True
DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
Loop
'htmlドキュメント フォーム(0番目) アイテム(MEMO)に転記(代入)する。
objIE.Document.Forms(0).Item("MEMO").Value = strCOMMENT
'フォーム(0番目)を .Submit する
objIE.Document.Forms(0).Submit '送信処理
End Sub
'.ReadyState = READYSTATE_COMPLETE
Do While objIE.ReadyState <> 4 '4の完了以外ループ
'何もしないループ(笑)
DoEvents
Loop
と、.ReadyState で 判断している 場合もあります。(判断する必要があったりします)
Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End EnumSub ie_test_ReadyState() '.ReadyStateのテスト
Dim objIE As Object 'IEオブジェクト参照用
Dim strCOMMENT As String 'コメントの入力
Dim nFLG As Integer 'テスト用のフラグ
'INPUTBOXでデータをもらう
strCOMMENT = InputBox("何か一言コメントを入れてください")
If strCOMMENT = "" Then
MsgBox "何か文字を入れてくださいね"
Exit Sub '途中で抜ける
End If
Application.WindowState = xlMinimized '入力後Excelを最小化、下に下げる
'IEを起動する
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True '見えるようにする(お約束)
Debug.Print "IE起動しました(.Navigate前)" 'デバッグで文字を書く
Debug.Print ".Busy = " & objIE.Busy
Debug.Print ".ReadyState = " & objIE.ReadyState
'.Navigate で 指定したURLを開く
objIE.Navigate "http://ken3-info.blog.ocn.ne.jp/test/2007/05/post_4291_1.html"
Debug.Print "指定したURLへ移動中(.Navigate直後)" 'デバッグで文字を書く
Debug.Print ".Busy = " & objIE.Busy
Debug.Print ".ReadyState = " & objIE.ReadyState
'表示終了まで待つ .Busy(忙しい)間 と.ReadyState(ステータス)が4以外の時 ループ
Debug.Print "これからループに入ります"
nFLG = 999 'テスト用のフラグを999で初期化する。
Do While objIE.Busy = True And objIE.ReadyState <> 4
If objIE.ReadyState <> nFLG Then '前回の状態と違うか判断
Debug.Print ".Busy = " & objIE.Busy 'デバッグで文字を書く
Debug.Print ".ReadyState = " & objIE.ReadyState
nFLG = objIE.ReadyState 'フラグに今の状態を代入する
End If
DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
Loop
Debug.Print "ループを出ました"
Debug.Print ".Busy = " & objIE.Busy 'デバッグで文字を書く
Debug.Print ".ReadyState = " & objIE.ReadyState
'htmlドキュメント フォーム(0番目) アイテム(MEMO)に転記(代入)する。
objIE.Document.Forms(0).Item("MEMO").Value = strCOMMENT
'フォーム(0番目)を .Submit する
objIE.Document.Forms(0).Submit '送信処理
End Sub |
IE起動しました(.Navigate前) .Busy = False .ReadyState = 0 指定したURLへ移動中(.Navigate直後) .Busy = True .ReadyState = 1 これからループに入ります .Busy = True .ReadyState = 1 .Busy = True .ReadyState = 3 ループを出ました .Busy = False .ReadyState = 4
Sub ie_test_Document_TITLE() 'Document.TITLEのテスト
Dim objIE As Object 'IEオブジェクト参照用
Dim strCOMMENT As String 'コメントの入力
'INPUTBOXでデータをもらう
strCOMMENT = InputBox("何か一言コメントを入れてください")
If strCOMMENT = "" Then
MsgBox "何か文字を入れてくださいね"
Exit Sub '途中で抜ける
End If
Application.WindowState = xlMinimized '入力後Excelを最小化、下に下げる
'IEを起動する
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True '見えるようにする(お約束)
objIE.Navigate "about:blank" '空白のページへ移動 初期化のつもり(笑)
'.Navigate で 指定したURLを開く
objIE.Navigate "http://ken3-info.blog.ocn.ne.jp/test/2007/05/post_4291_1.html"
Do While objIE.Document.Title = "" 'タイトルが変わったらループを抜ける
DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
Loop
'htmlドキュメント フォーム(0番目) アイテム(MEMO)に転記(代入)する。
objIE.Document.Forms(0).Item("MEMO").Value = strCOMMENT
'フォーム(0番目)を .Submit する
objIE.Document.Forms(0).Submit '送信処理
End Sub |
※まだまだ、書きかけ、内容をまとめていく予定・・・
チョット、はじめの一歩が長すぎましたね。ここからドキュメントの探りやプロパティ、メソッド、イベント・・・と先は長いんだけど。
ヘルプはどこにあるの?三流なのにどうやって資料を探しどこで勉強したの?
と、質問をいただきます。(自分で調べていきたい読者様の前向きな問い合わせです)
やはり本家Microsoft.comのよく聞く?MSDNを探ってみるのも・・・(あまり深く見ると楽しむ前に挫折しかかるので、下記はほどほどに・・・)
英語だけどMSDNの下記の項目を見るとオブジェクトの階層構造がわかりやすいと思います。
MSDN Library - http://msdn.microsoft.com/en-us/library/ms123401.aspx
□□□|--- Internet Explorer Development http://msdn.microsoft.com/en-us/library/aa155133.aspx
深いので省略(オイオイ、意味無いだろTOPからたどらせないと)
□□□□□□□|--- WebBrowser Control http://msdn.microsoft.com/en-us/library/aa752040.aspx
の
IE Reference for Visual Basic Developers ↓に深く埋まってます(英語ですが)
[http://msdn2.microsoft.com/en-us/library/aa752043.aspx] が 一覧で、その 下に、
InternetExplorer Object [http://msdn.microsoft.com/en-us/library/aa752084.aspx] をクリック
document Object [http://msdn.microsoft.com/en-us/library/ms531073.aspx] をクリック
Collections の 中の all [http://msdn.microsoft.com/en-us/library/ms537434.aspx] をクリック
などして、さまよいながら・・・探したりしてます。(三流ガイドの私も迷ってます)
続きは、[IE Web Browser のプロパティ・メソッドを調べる] を 見てください。
検索エンジンやリンクから、せっかく私のサイトに来ていただいたのですが、下記2つの検索結果がかなり参考になったり・・・するのでは???
IE|oIE|WebBrowser|objIE 魔界の 2つをキーワードにしてGoogleで検索する
(↑かなりの確立で有効な回答が得られると思います、先輩方の回答を見ると謎が解けると思います。私もすらっと回答できる、そんな人になりたいですね。。。)
↓あとは、パターン的にoIE,objIEと変数名を定義している人とWebBrowser1.が多いので、
oIE|objIE|WebBrowserをキーワードにしてGoogleで検索する
も有効かなぁ。※短いサンプルなどが見つかり、参考となるのでは?
さらに検索を紹介すると、[InternetExplorer.application]をキーワードにしてマイクロソフト内を検索する
などなど・・・
↑1歩1歩独自で進めたい人はこんな感じで、実際のコード や 掲示板・ML上の自分と似た質問のやりとりを見ながら進めるのがいいと思います。
※また、BBSやMLの空気を読んで(過去ログも読んで)、上級者がいらっしゃる掲示板に質問を投げてみるのもひとつの手です。
検索に迷ったら(IE操作の道に迷ったら)、objIEやoIE さらに InternetExplorer.application や Document.All などをキーワードにGoogleやYahooで探ってみてください。
脱線すると、google検索のワンダーホイールって面白い
↓私のよく使う変数 objIEで検索すると
objIEの結果をワンダーホイールで表示
↑なかなか、楽しめそうです。※関連項目の全てが線でつながらないけど(全てつながるとかなり面白いのに。)
googleってすげぇなぁ。
過去のメールマガジンのリンクが長かったので、下記に移動しました。
[IE操作 メルマガ 一覧]
よろしくお願いします。
改版履歴 更新情報:過去のIE操作の解説はこちら↓(IE6+XP,IE7+XP の記事です)
2009-06-01:[過去の解説 vba_ie_20090601.asp]
2009-02-01:[過去の解説 vba_ie_20090201.asp]
2008-05-01:[過去の解説 vba_ie_20080501.asp]
2007-08-31:[過去の解説 vba_ie_20070831.asp]
2007-05-20:[過去の解説 vba_ie20070520.asp]
もあわせてみてください。
(↑もしかして書き直さない過去の解説の方がよかったかも?(笑))
読者からのお勧め本。私はまだ購入していないのですが、下記の
[自動売買ロボット作成マニュアル~エクセルで理想のシステムトレード]
が参考になった三流君も見習って株のソフトを作ってくださいと多数(と言っても3人)に言われました。
株の自動売買ソフトかぁ・・・みなさん夢がありますね。。。
※追加情報(2006/11/08)、各証券会社にあわせたVBA IEコントロールの発注方法などは載っていないみたいです。本を買っただけではわからない・・と読者からお叱りを受けました。
※※メールで送られてくる質問の多数は株と競馬の自動データ処理なので、新たに解説ページを別で作ろうかなぁ・・・と思いつつ、具体的な予定は無かったり・・・はやく動き出せ、動けよコラ、三流プログラマーはこれだから と 自分自身に言ってみた。
読者からのお勧め本その2私はまだ購入していないのですが(またカヨ)、下記の
[VBAマクロで作る株式自動売買プログラム(仮)]
のタイトルが気になったので三流君も買ってみたら?と言われました(と言っても1
人ですが、、)
たしかに、タイトルに惹かれますね。あとは中身のチェックかな。
※じゃなくって、ポツポツIEを使った自動処理の本が出ているってことは、私は波に乗り遅れたかなぁ、、、今から証券口座を申し込んで作成を始めても遅いか。(そもそも、今から勉強して素人が株デビューするには時期が悪い?それとも?)
ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
|
感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 |
急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。
項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。
人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。
開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]
仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]
Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です
Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
ADOを使う DB SQLほか:(サンプルはASPだけど)
[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます
Blog:[三流君の作業日記]/ [サンプルコードのゴミ箱]/ 広告-[通販人気商品の足跡]/ [最近発売・予約商品]