VBから起動したIEオブジェクトが「×」ボタンで閉じられた時の
イベント取得しようと思っています。
フォームモジュールで以下のように宣言し
Private WithEvents IE As InternetExplorer
IEの終了は、 IE_OnQuit()で取得しようと思っています。
参照設定後、
Set IE = CreateObject("InternetExplorer.Application")
を実行したところ「型が一致しません」というエラーになってしまいます。
確認したところ、コンポーネントの追加で、
『Microsoft Internet Controls』(WebBrowserコントロール)が指定されているのが原因のようです。
ただ別画面でWebBrowserコントロールを使っているのでコンポーネントから削除するわけにもいきません。
何かよい回避方法はないものでしょうか?
[コンポーネントの追加]だけでなく、[参照設定]を行ってください。
環境によってファイル名は異なりますが、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 の方を使う機会は無いでしょう。
ツイート | ![]() |