IEのサポートがWindows11で完全終了してしまいましたね。(2021/10/05冒頭に追記)
そんな感じで下記の質問が来たので対応策の参考になれば
下記いただいた質問
>ExcelVBAでデータを集め、競輪予想を作っています。
・
・
・
>さて最近、IEのサポート終了が告知されていますが
>WEBからのデータ取得はどのような対処がベターなのでしょうか?ご意見をお聞かせください。
ベター、ベスト、イロイロな考え方がありますが、
1.MSXML2.XMLHTTP などでHTMLを取得して、CreateObject("htmlfile") を使う
下記の例題動画、なんだか私の解説はイマイチだった・・・やはり、素直にSelenium VBAなのかなぁ。
と思いつつ、冒頭で Set objHTML = CreateObject("MSXML2.XMLHTTP")
でHTMLを取得して、使ったサンプルを紹介してみたり
IEサポート終了後の世界 MSXML2.XMLHTTPとCreateObject("htmlfile")を使用してJRAオッズ取得 ワイドのオッズ取得に挑戦してみた
目次
10:08 2.ワイドのオッズを押す
11:55 2.1 strレースを探し、頭出し?
18:47 3.オッズのテーブルを判断して、Excelにワイドオッズを取得
21:37 3.1 tableのcaptionで判断
28:30 4.ワイドの一番人気を探す
31:17 元に戻って、2.4 2回目以降は、レースを選択
他の動画を見る(YouTubeで再生リストを見る)
↑も参考になれば・・無事に移行できるといいですね。 三流プログラマー Ken3
※ソースコードは[MSXML2.XMLHTTPとCreateObject("htmlfile")を使用してJRAオッズ取得]を見てアレンジしてください。
はじめは[WebBrowserを参照設定]から入り [VBAでIE操作解説]やってます。 よく使う.Document:の解説から [.Forms]で入力処理 [.Links]でリンク情報取得 [.Images]で画像の情報 [.Frames]でフレーム処理 [.Script]でスクリプト処理 ...など、まだまだ抜けてますが、 |
手探りで[ヘルプ IEのオブジェクトを探る] IE,WebBrowser: [IE プロパティ(各種設定)] [IE メソッド(イロイロな動作)] [IE イベント(発生後処理)] |
[VBAでIE操作(TOP)] 小さな[IE操作のサンプル]でTEST 次に[少し大きなIEを使ったサンプル] にチャレンジしたり [IE関係記事一覧] [VBA(TOP)] [三流君(TOP)] |
全ての質問には、答えられませんが、リクエストや質問があったら、[作者(三流君)に質問する] から 気軽に送ってください
挨拶:IE6とWindows XPの頃、VBAで(ExcelやAccessなどから)InternetExplorer WebBrowserを操作してみたいと思います。
と、カッコつけてスタートしました。時代は流れ、VistaとIE7を使う人も増えてきた今日この頃、、、
いつも私が使っている、
Set objIE = CreateObject("InternetExplorer.application")なのですが、Vista IE7の保護モードだと.Navigateで失敗したり・・うまくIE制御ができません。
時代に取り残されたのか、サンプルで私がよく使う好きな方法は、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を貼る操作の動画を入れたんだけど、クレームの連絡をいただく。。。(オイオイまたか)
・音声付きの動画だと 会社で観ると恥ずかしい
・YouTube は フィルタリングされていて会社から観ることができない
・PCの音量切ってます or スピーカーはハズしています・・・
など。
たしかに ソフト会社のPC。音源ボード入っていてもスピーカーつないでいなかったり、
勤務中にYouTube動画を見るのをルーター側で禁止している会社があっても不思議じゃないですね。
意外と動画解説って不評だったり(笑)
おっと、失敗話はこれくらいにして、そんな読者様のために静止画を貼ります(初めから画面のハードコピーにしとけよ)
UserFormを作り、IEのコントロールを貼りたいと思います
フォームを1つ作り IEのオブジェクトを貼る
まぁ、ユーザーフォームを選択すると、下記のようにUserForm1が作成されます。
次に、ツールボックスで空白エリアを選択後、右クリックを押してその他を選択します。
利用可能なコントロールがたくさん表示されるので迷いますが、
下の方にスクロールさせ、Microsoft Web Browser を選択します。
すると、コントロールに丸い世界のアイコンが表示されます。※地球をイメージ?
これを選択してフォームに貼り付けます。
貼り付けると こんな感じ↓(オブジェクト名 WebBrowser1 で貼り付けられると思います)
忘れずに保存します。これで、下準備ができました。
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になる日も近いかなぁ。
※確認すること、やることいっぱいだぁ。。。
過去のメールマガジンのリンクが長かったので、下記に移動しました。
[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]
2012-03-19:[過去の解説 vba_ie_20120319.html]
もあわせてみてください。
(↑もしかして書き直さない過去の解説の方がよかったかも?(笑))
せっかくホームページに来ていただいたのに、検索の紹介 ぉぃぉぃ
サイト指定や期間の指定を組み合わせて実行してみてください。
ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOPへ)] / [VBAで楽しく] / [記事一覧] |
カスタム検索
|