IEのイベントを拾いたいので、シートにコードを書いて拾ってみた。
※カッコイイ人は、クラスモジュールに書くんだけど、三流なのでシートに書いて逃げてみた。
※※一流プログラマーさんが書き直してくれるのに期待して(ぉぃぉぃ)
Option Explicit 'シートにコードを書いてみては? Dim WithEvents objIE As InternetExplorer 'イベント拾いたいので Dim WithEvents objNEW_IE As InternetExplorer 'でオブジェクト変数を定義して_NewWindow2で新規IEを作成、 Private Sub testMAIN() '初めの頭は普通に代入。 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.GoHome 'ここで、新しいウインドウを開いたり、イロイロコードを書くぞ。 'やりっぱなしだけど、不思議なことに放置されたIEを操作して、 '新しいWindowを開くと、↓が走るよ。 End Sub 'objIE_NewWindow2 のイベントを拾う Private Sub objIE_NewWindow2(ppDisp As Object, Cancel As Boolean) Set objNEW_IE = CreateObject("InternetExplorer.Application") Set ppDisp = objNEW_IE '作ったオブジェクトを代入 objNEW_IE.Visible = True End Sub '下記のように、作成したIEのイベント(ここでは読み込み完了)で処理したサンプルです Private Sub objNEW_IE_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox "あたらしく開かれたURLは" & URL End Sub
↑テストは手抜きでこんな感じだけど、アレンジして使ってみてください。
2011/06/24 追記、補足
Dim WithEvents objIE As InternetExplorer 'Excelシートに書いたコードでイベントを拾う
が動かないとクレームのメールをいただきました。
実際にやってみると、アレ動かない・・・
原因は、参照設定で、
□ Microsoft Internet Controls
(※↑がもし見つからない場合は、Microsoft Browser Helpersにチェックを入れてください。)
http://www.ken3.org/cgi-bin/group/vba_ie_object.asp
を初めに参照しないとダメでした。
説明不足でスミマセンでした。
テストの動画 http://www.youtube.com/watch?v=ZGdHD8tJnko
www.youtube.com
続き?
続きは、少し違う切り口のクラスモジュール に WithEvents で IE操作のコードを書いてみた
http://d.hatena.ne.jp/ken3memo/20110624/1308914113
↑をみて笑ってください。