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


三流君VBAでIE7操作 Vista保護モードで失敗、ほか

挨拶:IE6とWindows XPの頃、VBAで(ExcelやAccessなどから)InternetExplorer WebBrowserを操作してみたいと思います。
と、カッコつけてスタートしました。時代は流れ、VistaとIE7を使う人も増えてきた今日この頃、、、
いつも私が使っている、
Set objIE = CreateObject("InternetExplorer.application")なのですが、Vista IE7の保護モードだと.Navigateで失敗したり・・うまくIE制御ができません。

Vista IE7 Excel2007 で失敗

時代に取り残されたのか、サンプルで私がよく使う好きな方法は、Set objIE = CreateObject("InternetExplorer.application")なのですが、Vista IE7の保護モードだと.Navigateで失敗したり・・うまくIE制御ができません。※三流君被害者の会 会員を増やしていたり・・・
現状の失敗状態をお知らせします。And お勧めできない小細工方法を含めて

↓Vista IE7 Excel2007 で失敗

(大きな動画で見る↑)
↓修正 Vista上で小細工して動くようにしてみたけど...

(大きな動画で見る↑)
↑保護モードのチェックを外せば動くが、
これはとてもお勧めできない。。。です。
↑修正したソースは[バグ002 Vista IE7 で動かない]を見て下さい。
↑の実行サンプルは[↑の小細工した実行サンプル]
(IE_GET_TABLE_0316.zip です。解凍して動かして確認してください)

フィードバック: 読者様より、IE7対応で↓下記のサイトを勧めていただきました
www.happy2-island.com 7.1 IEオブジェクトを作る(IE7編)
↑IE7のオブジェクトの対応が丁寧に書いてありました。VBSだけど参考になると思います

過去の対応記事を紹介

1つ前ですが、保護モードのチェックを外してみたり、ExcelのUserFormにIEコントロールを貼ったり、イロイロと試行錯誤してました。読んでダメっぷりを笑ってくださいね・・・

いつもの私が好きな Set objIE = CreateObject("InternetExplorer.application") だと、Vista + IE7で失敗したり(オイオイ、いきなり失敗談かよ)
なので、これから新規に始める人は、素直にUserFormにIEを貼ると . を押すとプロパティやメソッドが出てくるので、そちらのほうがお勧めかなぁ。始めは手間だけど、Excel持ってれば、こっちから入るのがいいかも。ってことで 4種類の動画解説を作りました。周りに人が居ないときに見てください(オイオイ)

OS:XP Excel2003 と IE6,7で動作したIE操作のVBAサンプル
Set objIE = CreateObject("InternetExplorer.application")
をそのままVista IE7 Excel2007で走らせたら
接続中でループしているIE と 動いているが新規のIEが立ち上がっていて
objIE経由でコントロールできなかった、動かなかった・・・そんな悲しいお話です。
Vista Excel2007でサンプルをダウンロードして実行してコケた失敗動画です。→
で、考えた対策は下↓の3つです。
原因がVista IE7の保護モードなので、お勧めできないのですが、コントロールしたいサイトを手動で(オイオイ手動かよ)信頼済みのサイトにしてテストしてみたそんな実験結果です。→
IE7への移行で困ってサイトに来た読者様へ : すでにXP+IE6で作成したシステムが稼働・運用中で、新規のVista PC端末に移行・機能追加しないとダメ、IE7でテストしたらCreateObject("InternetExplorer.application")でコケタ急いで修正しないと・・・そんな急ぎの時は、とてもお勧めできないけど一番手軽なのが↓
[Vista IE7 信頼済みのサイトにしてVBAからコントロールしてみた]
↑操作対象のURLが固定のサイトだからって、セキュリティを変更するとマズイし気分が悪いよね(本格的な対策のつなぎで)
※いくら急ぎだからって、手を抜くと後で倍になって返ってきたりします(経験談?)
次に考えたセコイ方法が↓
IEのコントロールをExcelのUserFormに貼り、
UserForm1.Show vbModeless
と、モードレスで立ち上げます、
次に、
Set objIE = UserForm1.WebBrowser1
で、フォームのWebBrowserを変数に代入します。
あとはobjIEに対して既存のプログラムを変更無しで動くのでは?
そんなテストを実行してみました。
※三流的な小細工ですが・・・→
↓実際に過去の資産(作成済みのプログラム)を有効に?細工したサンプルです。IE6とFormにIEを貼った違いです[IE起動とデータセットのサンプル 20080527_IE_Form.zip]←Excel VBAです objIE = UserForm1.WebBrowser1のセコイ方法を実際に動かしたりソースをみてください。
既存のプログラムを生かす、、、↑

過去の資産にこだわってました、
が、
これから新規にIE操作プログラムを組む人は、
Excel UserForm に コントロールを貼ったら、
素直に Me.WebBrowser1.Navigate など、
フォームにモジュールを書いた方がいいのでは?
そんな、過去に引きずられない方法です。→
↑再生が途切れる場合、再生を一時停止ボタンで少し止めて 赤いバーより先に読み込みバッファが貯まってから 再生するとスムーズに再生されます(私の動画作りが悪いのかも・・う〜ん・・)ダブルクリックして個別ページに飛ぶのも手かなぁ・・・

事前準備 UserFormにIEを貼る方法

上にUserFormにIEを貼る操作の動画を入れたんだけど、クレームの連絡をいただく。。。(オイオイまたか)
・音声付きの動画だと 会社で観ると恥ずかしい
・YouTube は フィルタリングされていて会社から観ることができない
・PCの音量切ってます or スピーカーはハズしています・・・
など。
たしかに ソフト会社のPC。音源ボード入っていてもスピーカーつないでいなかったり、
勤務中にYouTube動画を見るのをルーター側で禁止している会社があっても不思議じゃないですね。
意外と動画解説って不評だったり(笑)
おっと、失敗話はこれくらいにして、そんな読者様のために静止画を貼ります(初めから画面のハードコピーにしとけよ)

UserFormを作り、IEのコントロールを貼りたいと思います
フォームを1つ作り  IEのオブジェクトを貼る
まぁ、ユーザーフォームを選択すると、下記のようにUserForm1が作成されます。


次に、ツールボックスで空白エリアを選択後、右クリックを押してその他を選択します。


利用可能なコントロールがたくさん表示されるので迷いますが、
下の方にスクロールさせ、Microsoft Web Browser を選択します。



すると、コントロールに丸い世界のアイコンが表示されます。※地球をイメージ?
これを選択してフォームに貼り付けます。


貼り付けると こんな感じ↓(オブジェクト名 WebBrowser1 で貼り付けられると思います)

忘れずに保存します。これで、下準備ができました。

Object.メソッド や object.プロパティ などあとは同じ

UserForm に 無事貼ることができたら、あとは、
Me.WebBrowser1.Navigate や Me.WebBrowser1.Document.〜
など、頭が違うだけで同じように使えます(気がついてみれば当たり前のことなんだけど・・・)
同じようで違うことがあって、UserFormに貼って便利になったのが、
プログラムを打ち込んでいると気がつくが、ドットを押してメソッドやプロパティが出るので大変便利なんですよ。

↑もっとはやく 教えろよ ボケ・・・と 読者様の声が聞こえてくるような・・・・

新規に作成する場合でExcelやAccessが使える場合はUserFormに貼ってみては?

また既存のシステムでは、
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
をコメントにして、
Set objIE = Me.WebBrowser1 'フォームのIEを代入する
と起動部分を置き換える こんな感じで既存の動いているプログラムの起動部分 1行を修正して対応してみました。対応したサンプルです→[Documentの山からテーブルデータを抜くサンプル 20080513_IE_TEST.zip]←Excel2003の.xlsファイルです、解凍後実行しながら、修正したりして遊んでみてください。

逃げるように 終わりの挨拶

なんか、イマイチの対応ですが、イロイロと試してみてください。
そんな記事を書いていたら、もうIE8の時代?になっていくのかなぁ。
Vistaとか言ってるけど、Windows7になる日も近いかなぁ。
※確認すること、やることいっぱいだぁ。。。



[#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. [4798021180]- ゲームプログラマになる前に覚えておきたい技術
  2. [4798116831]- レガシーコード改善ガイド (Object Oriented SELECTION)
  3. [4798119865]- PHP 逆引きレシピ (PROGRAMMER’S RECiPE)
  4. [479735397X]- Photoshop 10年使える逆引き手帖 【CS4/CS3/CS2/CS/7.0対応】 (ああしたい。こうしたい。)
  5. [4798017973]- Excel VBAのプログラミングのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Excel2007/2003対応
  6. [489471499X]- Effective Java 第2版 (The Java Series)


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

ページフッター

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

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

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

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



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

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


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