vbaでIEを起動しログイン処理などをしてページ遷移をすると、それ以上処理できなくなる。
オブジェクトがページ遷移についていかない感じ
Sub main() Dim objIE As InternetExplorer ' IE起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'デバッグ用可視化 ' URL指定 objIE.navigate ("http://192.168.0.2") Call waitIE(objIE) '■ログイン処理 Set loginform = objIE.document.forms(0) loginform.loginid.Value = "hogehoge" loginform.Password.Value = "piyopiyo" loginform.submit Call waitIE(objIE) '1秒待つ (念の為) Application.Wait Now + TimeValue("00:00:01") 'objIEが遷移前の古いページのまま MsgBox (objIE.LocationURL) '閉じても閉じてくれない objIE.Quit() End Sub ' IEが落ち着くまで待つ Sub waitIE(ByRef objIE As InternetExplorer) While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Wend End Sub
Excel2013の場合、リンクをクリックした直後、IEオブジェクトが リンククリック前とクリック後の2つ存在することがわかった。
なので、ページ遷移後には Shell.Application で一覧から 遷移後っぽいURLを指しているオブジェクトを探さなければならない。