VBA開発

VBAでIE操作「Internet Explorerのプロセスを強制終了」する

Internet Explorerのプロセスを終了する意味

Excel VBAマクロでIE操作していると、IEのプロセスが残ってしまうことがあります。
残ってしまうと、VBA側からInternet Explorerを起動できない現象発生します。

■現象
・IEの画面自体立ち上がらない。(目視で確認ができない)
・IEの画面は立ち上がったが、指定したホームページが表示されない。
・IEの画面は立ち上がったが、blankの状態(白いページが表示)のまま。
こちらパソコンの環境によって不具合出る、出ないもある為、厄介な部分です。
上記現象が起きれば、プログラムのコードは正しい。IEのプロセスが邪魔していると考えていいです。

プロセスが残っているか確認する方法

WIndowsのタスクマネージャー(タスクバーで右クリック→タスクマネージャー)で確認ができます。
IEが立ち上がっていないにもかかわらず、バックグラウンドプロセスに「iexplore.exe」が存在していれば、
プロセスが残っている状態です。(動作が不安定になる可能性があります)

Internet Explorerのプロセスを終了する方法

Public Sub Call_IE_TaskKill()
    Dim obj As Object
    
    Set obj = CreateObject("WScript.Shell")
    obj.Exec ("taskkill.exe /F /IM iexplore.exe")
End Sub

「taskkill.exe」は、プロセスを終了させる実行ファイル(exe)です。
「taskkill.exe」で、Internet Explorerのプロセスを強制終了させます。
taskkillのオプション
/Fアプリケーションの終了
/IM終了させるアプリケーションの名称

VBAでIE操作の不安定なパソコンの場合は、IE起動する前に一度、プロセスを終了するようにしましょう。
これによって、安定性が高まります。

仮にchromeを終了する場合は以下。

obj.Exec ("taskkill.exe /F /IM chrome.exe")

注意点

実際は以下のような動きを行います。
↓ コマンドプロンプトの黒い画面が表示
↓ 終了コマンドを実行
↓ コマンドプロンプトの黒い画面が消える
  • プロセス終了するのに10秒~30秒程度時間がかかる為、その点認識する必要があります。
  • 端末によってはこの処理を入れる事で安定しない場合もある為、必ずしも優秀な処理ではないと理解しましょう。(95%はこの処理入れた方が安全ですが・・・)

コメント

タイトルとURLをコピーしました