HP:[三流君(TOPへ)]/[VBA系(TOP)] /[VBAでIEを操作(TOP)へ] /[過去のメルマガ記事一覧]
大分類:[Document(タグ付き文章)] /[Document.Forms(入力処理)] /[Document.Links(リンク情報)] /[Document.Images(画像情報)] /[Document.Frames(フレーム処理)]
IE,WebBrowser: [IE プロパティ一覧(各種設定)] /[IE メソッド一覧(イロイロな動作)] /[WebBrowserのイベントに処理を書く]


三流君VBAでIE操作 2007-08-31 起動や簡単なデータセットの実験

CreateObject("InternetExplorer.application")
で、IEを起動させ、フォームにデータをセットして、Submit送信する、簡単な実験です。
レアケースなどを考えていないので、参考になるか・・・(冗長な解説ですがみてください)

今の最新の解説は、
http://www.ken3.org/cgi-bin/group/vba_ie.asp
を見てください。
※ココから下のサンプル、XP+IE6の1つ前の古い環境で作成したメルマガです。そのまま動かない場合もありますが、何かの参考となれば幸いです。
読者様より、IE7対応で↓下記のサイトを勧めていただきました
www.happy2-island.com 7.1 IEオブジェクトを作る(IE7編)
↑IE7のオブジェクトの対応が丁寧に書いてありました。VBSだけど参考になると思います
※あと、毎日のようにIE操作はUWSCを使え とメッセージをいただくので、IE操作の人はUWSCもググってみては??
※※私もザボってないで、がんばらねば・・・ってことでやっと三流的なIE7対応方法として[Vista IE7対応に入る(ExcelのUserFormにIEコントロールを貼る)]をUPしました(2008/05/24)IE8の背中が見えてきたのに遅すぎ(ゴメンなさい)


読者より、下記の書き込みをいただきました。(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をウォッチすると、いろいろわかります。


VBAでIEを操作する解説を始めたいと思います。
まぁ、ここを読むだけじゃ厳しいと思いますが、入り口のひとつとしてお役に立てれば幸いです。

IEの起動、はじめは・・・CreateObject かな?

CreateObject("InternetExplorer.application")
にするか、フォームにIEのオブジェクトを埋め込むか?
まずは、ここからかな。
読者の心の声:イマイチ何?言ってんだか?わからないのですが・・・ 三流君の説明聞くより、コード見たほうがハヤイって?

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
↑イロイロなサイズを指定して起動できたりするみたい。

過去のメルマガ参考記事:[IE起動 CreateObject("InternetExplorer.application")]
フォームにオブジェクトを貼った例:[フォームにIEのコントロールを貼る]←みたいなこともできます。

サンプルを走らせながらが一番いいのかなぁ? マニュアルや調査することも非常に大切なのですが、入り口で挫折しないためには、楽しくなくっちゃ???
サンプルを見ながら動かしていけば、なんとなく感覚がつかめてくるので、あとはエラー処理を含めた丁寧なプログラムを組んでいく、そんな感じがいいのでは???

過去の解説はこちら→[過去の解説 vba_ie20070520.asp]もあわせてみてください。
ここから↓新しく書き直した解説です。(↑もしかして書き直さない方がよかった(笑))

指定したURLを開き、データをセット後、ボタンを押したい

インターネットエクスプローラーの操作と一口に言ってもイロイロな操作があると思います。
そのうちの一つが、あるホームページ(URL)を表示して、フォームにデータをセットして登録ボタンを押す、この一連の流れを自動で行いたい・・・と日本語で書くのは簡単なんだけど、この流れをプログラムで記述しないとなぁ。先は長いかなぁ。
サンプル IETEST002.XLS→[http://ken3-info.blog.ocn.ne.jp/zip/IETEST002.zip]をzipを保存後、解凍して、テストしながら、下記の解説を読んでみてください。

URLを開く(.open)じゃなくって、.Navigateなんですよ

CreateObject("InternetExplorer.application")なんて感じで、無事にIEのオブジェクトを作成できたら、次は指定したURLを開きたいですよね。
まぁ、文章でもなんでもたいていは開く処理が必要ですよね。

Workbooks.Open Filename みたいに.Open?
それとも、.URLOpen?
ハヤク、IEでURLを開くメソッドを教えろコラ!!

アナタ、先走りますねぇ、想像力豊かでガマン汁出てるよ(オイオイ)じゃなくって、メソッドの名前を勝手に.URLOpenとか創造するなんて先走り過ぎ。※まぁ、予測・予想する能力もプログラマーとしてはとても大切で必要なんですが・・・([愚痴系 No.181 TimeAddって関数を予想する力? ]を暇な時にでも読んでみてください)

感覚は文章やブックを開く感覚でURLを開くOpenなのですが、URLを開く命令は.Navigateです。
objIE.Navigate URLの文字列 って感じです。
私のブログ[http://ken3-info.blog.ocn.ne.jp/]を開く(飛ばす)には、
下記のような命令を書きます。(と言っても1行追加するだけですが)
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を開くことができたでしょ。
あとは、ここから、データをセットしたり、表示されているデータを自動で抜いたり、イロイロと操作の入り口に先っぽが入ったのかなぁ。(入り口が狭くて中が広い?○スポットは??まだまだ、奥が深いんだけど・・・?)
なんて、くだらないこと言ってないで、 英語だけどMSDNの下記の項目を見るとIEの動作(メソッド)が載っているとと思います。
InternetExplorer Object [http://msdn2.microsoft.com/en-us/library/aa752084.aspx] が 一覧で、その 下に、
.Navigate [http://msdn2.microsoft.com/en-us/library/aa752093.aspx]などが載ってます

IEのdocumentオブジェクト formを使ってhtml入力フォームにアクセスしてみた

指定したURLを開くことができたので、次はデータをセットしてみたいと思います。
試しに作ったフォーム、[http://ken3-info.blog.ocn.ne.jp/test/2007/05/post_4291_1.html]← の感想エリアにデータをセットしてみます。

まず、html内のソースを表示して<form>の中身を確認します。
いきなり、中身とかソースとか言われてもなぁ・・・頭の中?だらけだよ。
あっ、すいません、自分だけわかってて相手のこと考えて無くて。
目的の入力フォームの構造が知りたいので、目的のページを表示後、
表示--ソースとするとhtmlやcgiの中身を手作業ですが確認できます。
[ソースの確認画面イメージ]

テスト用のhtmlを確認すると、

<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>

と入力用のhtmlフォームが作られています。

今回のテストでは、感想にデータを入力してみたいと思います。
入力したいinputエリアは、
<INPUT TYPE="TEXT" NAME="MEMO" SIZE=20><br>
の部分です。 name=XXXX(NAME="MEMO")と定義されてます。
このnameを利用してオブジェクトを表現するには、どうするのだろう?

とその前に、一呼吸おいて、
Excelのブック・シート・セルへデータをセットする場合、下記のように
シート--範囲
Sheets("Sheet2").Range("B3") = "B列3行目です"

シート--セル(y,x)
Sheets("Sheet3").Cells(5, 4) = "y,x 5行目の4列です"
Sheets(シート名).Rangeや.Cellsでオブジェクトへアクセスしていると思います。 Htmlの入力フォームの場合、オブジェクトの階層構造が
IEアプリ--ドキュメント--フォーム--アイテム(項目)
で表すことができるので(ほかにも表現方法はあるのですが今回はこれで)
objIE.Document.Forms(0).Item("MEMO").Value = 値
htmlドキュメント フォーム(0番目) アイテム(MEMO)に転記(代入)する。って感じです。
下記のようなプログラムでデータをセットすることができます
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
ポイントは、
Excelなら、アプリ -- ブック(Book) -- シート(Sheet) -- セル(Cells)
のオブジェクト階層が、
アプリ -- html(Document) -- フォーム(Form) -- 入力エリア(A INPUT)
objIE.Document.Forms(0).Item("MEMO").Value
みたいな感じです。
読者の声:なんとなくわかってきたけど、意味不明な処理が1つあるよ。なんで5秒待ってるの??
あっ、これですか・・表示待ちを入れないとオブジェクトの展開処理が間に合わないみたいで、いきなりobjIE.Documentにさわりにいくと実行時エラー Document メソッドは失敗しました ・・・とエラーになるんですよ。
エラーの画像→[http://ken3-info.blog.ocn.ne.jp/screen/2007/05/ie__debe.html]
なので、objIE.Navigate 後に相手の準備ができる時間を与えてます。。。
※数をこなしていくと感覚がわかると思います。
※※過去のメルマガ→[VBAからIE操作 NAMEが同じフォームの項目へデータをセットする]も見てください

おっと、英語だけどMSDNの下記の項目を見るとオブジェクトの階層構造がわかりやすいと思います。
Reference for Visual Basic Developers [http://msdn2.microsoft.com/en-us/library/aa752043.aspx] が 一覧で、その 下に、
document Object [http://msdn2.microsoft.com/en-us/library/ms531073.aspx] をクリック 後に、
Collections を探っていくと、
forms Collection [http://msdn2.microsoft.com/en-us/library/ms537457.aspx] オブジェクトがあります。

.Submit メソッドを使って フォームの送信動作

データをフォームにセットできたら、次は、送信ボタン(投稿)を押したいですよね・・・
FORM Element | form Object [http://msdn2.microsoft.com/en-us/library/ms535249.aspx]
のメソッドの中に
submit [http://msdn2.microsoft.com/en-us/library/ms536771.aspx] があります。
単純に該当フォームを.Submitでできちゃったりするんですよ。
※オブジェクト.動作(メソッド) ってイメージかなぁ。

objIE.Document.Forms(0).Submit
こんな1行を入れてテストしてください。(下記、ほとんど同じだけど・・・)
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 でフォーム送信処理]も見て参考となれば・・・

.Busy = True の間、読み込み完了を待ってみる

上のデータセットのサンプル、回線の状態(オフラインとか)やテストで使用しているocn blogの反応が鈍いとエラーになるよね。。。
※5秒以上待っても表示が終わらないときなど

手抜きで、5秒待つ・・・とか言ってるけど、5秒ぐらいじゃ準備不足でエラーになる場合が多いよ。※特にオフラインでADSL回線からつなげに行くと初回5秒で読み込み完了にならないよ。

じゃ、余裕を見て、倍の10秒待ってみたら?相手のサイトによって待つ時間を工夫してくださいね。
オイオイ、本気かよその回答?

自分勝手に挿入(データを)するんじゃなくて、相手が準備OKが確認してから入れろよ(データを)。イタイだろ、わかったかボケ。この、2秒だとか、5秒待ちとか言ってる○○野郎。

まぁ、まぁ、サンプルを走らせて、オブジェクトが見つからないとエラー画面が表示されたからって興奮しないでよみんな。
確かに相手の準備時間が状況によって変わる、そんな時、ありますよね。
ってことで、相手の状態を少し見て(プロパティを見て)、読み込み完了、準備OKを待ってみたいと思います。

前置きが長かったけど、そんな時に便利なのが、
.Busy プロパティかなぁ→[http://msdn2.microsoft.com/en-us/library/aa752050.aspx]

Busy(忙しい?) True→忙しい、動いてる False→ヒマ、止まっている
単純に、objIE.Busy = Trueの間、ループで待ってみました。
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

まぁ、この objIE.Busy = True だけじゃ、ダメな時も多々あるんだけど・・・
どんな時だよ、もったいぶりやがって、、、

.ReadyState = 4 (READYSTATE_COMPLETE) を みる

objIE.Busy = True だと 広告やフレームを読み込んだ時にFalseになってしまう。 ※[No.116 InternetExplorer操作 Frameと遊ぶ Objectを探る方法 ]←の記事の一番下、フィードバックにフレームを使用したhtmlを操作する質問があって気が付いたんだけど・・・

この問題(実際に読み込み中なのに.BusyがFalseになる)を解決したいので、

'.ReadyState = READYSTATE_COMPLETE
    Do While objIE.ReadyState <> 4 '4の完了以外ループ
        '何もしないループ(笑)
        DoEvents
    Loop
と、.ReadyState で 判断している 場合もあります。(判断する必要があったりします)

.ReadyStateで判断はいいとして、4ってなに???
あっ、スイマセン、
MSDNの[.ReadyState]←を見ると、
Enum READYSTATE
    READYSTATE_UNINITIALIZED = 0
    READYSTATE_LOADING = 1
    READYSTATE_LOADED = 2
    READYSTATE_INTERACTIVE = 3
    READYSTATE_COMPLETE = 4
End Enum

と、定義されています。参照設定していないので、objIE.ReadyState <> 4と直接値の4を書いてますが、objIE.ReadyState <> READYSTATE_COMPLETEと書くときれいです。

Debug.Printを大量に入れ、下記のようにテストしてみました。
Sub 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

と出力されてます、.ReadyState = 2 が無いのが気になりますが、.ReadyStateを見て判断するのもひとつの手ですね。※えっ、テストになってないだろって?※※本当のテストはフレームページや広告のページを使って、.Busy = FalseでもReadyStateが読み込み中の場合を示さないとテストの意味が無いって?厳しいなぁ・・・

んっ?
objIE.Busy = True And objIE.ReadyState <> 4
って、なんかおかしくない?
ループの条件が、objIE.Busy = Flaseになったら、左側の条件がくずれない?
(右側が4以外でも、ループを抜けない??)
objIE.Busy <> False Or objIE.ReadyState <> 4
でしょ???↑皆さんも注意してくださいね・・・

だから不完全なテストはマズイんだって・・・と思ったところで、
あまりいじめないで下さいよ(でも、いじるのはOK?イジメとイジリの微妙な違いがイマイチわからないが)

空白ページから タイトルの変化 .Document.Title を みる

ステータスの変化で完了をみていましたが、同様にタイトルの変化で完了をみてみます。※なんか、我流で邪道を丸出しですが・・
objIE.Navigate "about:blank" で 空白のページを表示させてから、
Do While objIE.Document.Title = "" で タイトルが変化するまでループしてます。小細工のニオイがプンプンしますが、こんな方法もあるってことで、、、
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

ここまでのサンプル IETEST002.XLS→[http://ken3-info.blog.ocn.ne.jp/zip/IETEST002.zip]をzipを保存後、解凍して、テストしてみてください。

※まだまだ、書きかけ、内容をまとめていく予定・・・


チョット、はじめの一歩が長すぎましたね。ここからドキュメントの探りやプロパティ、メソッド、イベント・・・と先は長いんだけど。


ken3.org 掲示板の過去LOG→:[保存された過去ログを見る]


[#MSDN][ページ内のTOPへ戻る]

WebBrowser Control や DHTML など オブジェクトやプロパティの探り方?

ヘルプはどこにあるの?三流なのにどうやって資料を探しどこで勉強したの?
と、質問をいただきます。(自分で調べていきたい読者様の前向きな問い合わせです)
やはり本家Microsoft.comのよく聞く?MSDNを探ってみるのも・・・(あまり深く見ると楽しむ前に挫折しかかるので、下記はほどほどに・・・)

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 のプロパティ・メソッドを調べる] を 見てください。


[#Search][ページ内のTOPへ戻る]

番外編 GoogleでoIE,objIE,WebBrowserをKeyWordにして検索

検索エンジンやリンクから、せっかく私のサイトに来ていただいたのですが、下記2つの検索結果がかなり参考になったり・・・するのでは???
IE|oIE|WebBrowser|objIE 魔界の 2つをキーワードにしてGoogleで検索する
(↑かなりの確立で有効な回答が得られると思います、先輩方の回答を見ると謎が解けると思います。私もすらっと回答できる、そんな人になりたいですね。。。)
↓あとは、パターン的にoIE,objIEと変数名を定義している人とWebBrowser1.が多いので、
oIE|objIE|WebBrowserをキーワードにしてGoogleで検索する
も有効かなぁ。※短いサンプルなどが見つかり、参考となるのでは?

さらに検索を紹介すると、[InternetExplorer.application]をキーワードにしてマイクロソフト内を検索する
などなど・・・

↑1歩1歩独自で進めたい人はこんな感じで、実際のコード や 掲示板・ML上の自分と似た質問のやりとりを見ながら進めるのがいいと思います。
※また、BBSやMLの空気を読んで(過去ログも読んで)、上級者がいらっしゃる掲示板に質問を投げてみるのもひとつの手です。
検索に迷ったら(IE操作の道に迷ったら)、objIEoIE さらに InternetExplorer.applicationDocument.All などをキーワードにGoogleやYahooで探ってみてください。

脱線すると、google検索のワンダーホイールって面白い
↓私のよく使う変数 objIEで検索すると
objIEの結果をワンダーホイールで表示
↑なかなか、楽しめそうです。※関連項目の全てが線でつながらないけど(全てつながるとかなり面白いのに。)
googleってすげぇなぁ。


不思議なIEお嬢様、まだまだ攻略できそうにないよね。
えっ、Excel姫やAccessお姉さまも攻略して無いダロって?
※う〜ん、実力無くて、なかなか、攻略できなくて。。。。
何かの参考となれば幸いです。


[#BackNoLink][ページ内のTOPへ戻る]

過去のメールマガジンのリンクが長かったので、下記に移動しました。
[IE操作 メルマガ 一覧]
よろしくお願いします。


改版履歴 更新情報:過去のIE操作の解説はこちら↓(IE6+XP,IE7+XP の記事です)
2009-12-01:[過去の解説 vba_ie_20091201.asp]
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]
もあわせてみてください。
(↑もしかして書き直さない過去の解説の方がよかったかも?(笑))


プログラミング 関係の書籍を探す(紹介します)

  1. [4774141682]- Software Design 総集編 【2000~2009】(DVD付)
  2. [4798025623]- ガベージコレクションのアルゴリズムと実装
  3. [477414164X]- プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)
  4. [4798119415]- 初めての人のためのLISP[増補改訂版]
  5. [4822283909]- Google Androidアプリケーション開発入門 画面作成からデバイス制御まで――基本機能の全容
  6. [477414195X]- 「最速」SEO ~たった28日で上位表示する驚速ビジネスサイト構築術~

中刷り広告???(オイオイ)

読者からのお勧め本。私はまだ購入していないのですが、下記の
[自動売買ロボット作成マニュアル~エクセルで理想のシステムトレード]
が参考になった三流君も見習って株のソフトを作ってくださいと多数(と言っても3人)に言われました。
株の自動売買ソフトかぁ・・・みなさん夢がありますね。。。
※追加情報(2006/11/08)、各証券会社にあわせたVBA IEコントロールの発注方法などは載っていないみたいです。本を買っただけではわからない・・と読者からお叱りを受けました。
※※メールで送られてくる質問の多数は株と競馬の自動データ処理なので、新たに解説ページを別で作ろうかなぁ・・・と思いつつ、具体的な予定は無かったり・・・はやく動き出せ、動けよコラ、三流プログラマーはこれだから と 自分自身に言ってみた。

読者からのお勧め本その2私はまだ購入していないのですが(またカヨ)、下記の
[VBAマクロで作る株式自動売買プログラム(仮)]
のタイトルが気になったので三流君も買ってみたら?と言われました(と言っても1 人ですが、、)
たしかに、タイトルに惹かれますね。あとは中身のチェックかな。
※じゃなくって、ポツポツIEを使った自動処理の本が出ているってことは、私は波に乗り遅れたかなぁ、、、今から証券口座を申し込んで作成を始めても遅いか。(そもそも、今から勉強して素人が株デビューするには時期が悪い?それとも?)


[#QA_MESSAGE][ページ内のTOPへ戻る]

ページフッター

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

質問や要望など メッセージを送る(三流君に連絡する)

三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。

感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)

Blog:[サンプルコードのゴミ箱]
動画:[VBA解説・テスト動画]


[三流君(TOPへ)] / [VBAで楽しく] / [記事一覧]