IEインスタンスを終了する行を含めると、Do Until
にオートメーションエラーが発生するか、マクロがフリーズします。この行は、古いプロセスがメモリにないことを確認するために使用されます。VBA - シェル経由でInternet Explorerプロセスを終了する
デバッグに入り、シェル行を実行して少し待っているので、次の行を実行する前にIEがロードされる可能性があるので、この問題は表示されません。
IEアプリケーションの準備ができているかどうかを検出する方法はありますか? name='iexplore.exe'
をname='iexplore.exe *32'
に置き換えても、32ビットプロセスが消えない場合があります。おそらく1つが消えてしまい、他のインスタンスを殺すことができます。
Shell ("C:\Windows\system32\cmd.exe /c wmic process where name='iexplore.exe' call terminate")
Link = "http://www.example.com"
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate Link
Do Until ie.ReadyState = 4 And ie.Busy = False
DoEvents
Loop