CreateObject("InternetExplorer.Application") 『オートメーションエラーです。 エラーを特定できません』

○ 改善策



ie.Quit (IEのアプリケーションを消すメソッド)を呼ぶ
 

○ 改善前

Dim ie As Object: Set ie = CreateObject("InternetExplorer.Application")   ' IE を起動
ie.Visible = False
Call ie.Navigate("http://localhost")                                      ' URL にアクセス
Do While ie.Busy: Loop                                                    ' ダウンロード待ち
Dim innerHTML As String: innerHTML = ie.Document.body.innerHTML           ' 結果取得

Set ie = Nothing                                                          ' オブジェクトをクリア

 

○ 改善後

Dim ie As Object: Set ie = CreateObject("InternetExplorer.Application")   ' IE を起動
ie.Visible = False
Call ie.Navigate("http://localhost")                                      ' URL にアクセス
Do While ie.Busy: Loop                                                    ' ダウンロード待ち
Dim innerHTML As String: innerHTML = ie.Document.body.innerHTML           ' 結果取得
Call ie.Quit                                                              ' CreateObjectで作成した IE を閉じる。
Set ie = Nothing                                                          ' オブジェクトをクリア

 

○ 原因



ie.Quit をいれないと IE は起動したままになる。そのため、この症状が発生した際に、タスクマネージャーを開くといくつも開かれた IE を確認できる。これを右クリック、終了すると、再度実行できるようになった。そこから原因、改善策を特定しました。

ちなみに、計算式を同時に大量実行させるなどして Excel の CPU 使用率が 100% に達すると、何のエラーもはかずに死ぬことがあります。そのようなケースが、過去にあったため、たまたまタスクマネージャーを開きました。