IEオブジェクトのイベントを取得するには?


mmik  2006-03-20 21:03:07  No: 94667

VBから起動したIEオブジェクトが「×」ボタンで閉じられた時の
イベント取得しようと思っています。
フォームモジュールで以下のように宣言し
Private WithEvents IE As InternetExplorer

IEの終了は、 IE_OnQuit()で取得しようと思っています。
参照設定後、
Set IE = CreateObject("InternetExplorer.Application")
を実行したところ「型が一致しません」というエラーになってしまいます。

確認したところ、コンポーネントの追加で、
『Microsoft Internet Controls』(WebBrowserコントロール)が指定されているのが原因のようです。
ただ別画面でWebBrowserコントロールを使っているのでコンポーネントから削除するわけにもいきません。
何かよい回避方法はないものでしょうか?


魔界の仮面弁士  2006-03-20 22:09:44  No: 94668

[コンポーネントの追加]だけでなく、[参照設定]を行ってください。
環境によってファイル名は異なりますが、XP なら shdocvw.dll です。

その上で、shdocvw.dll の方の "Microsoft Internet Controls" の方を、
WebBrowser の追加による "Microsoft Internet Controls" の方よりも
(参照設定画面の)優先順位リストの上位に移動しておいてください。

> ただ別画面でWebBrowserコントロールを使っているのでコンポーネントから削除するわけにもいきません。
[コンポーネントの追加]で指定される InternetExplorer と、
[参照設定]で指定される InternetExplorer は別物です。

両者を区別するなら、ライブラリ名を修飾させて
  Private WithEvents IE1 As SHDocVwCtl.InternetExplorer
  Private WithEvents IE2 As SHDocVw.InternetExplorer
のように書けますが、SHDocVwCtl の方を使う機会は無いでしょう。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加