IEが表示されているにも関わらず、リモートサーバーがないエラーが出る
Excel VBAマクロでIEを自動操作する際、エラーが出て止まってしまうケースの対応策です。
他のエラーはこちらの記事を参照にどうぞ。
問題点
「実行時エラー’462′:リモートサーバーがないか、使用できる状態ではありません。」
の実行時エラーが頻繁に表示される場合、VBAがIEをうまく掴めていないかもしれません。
(毎度同じタイミングで上記エラーが出る場合は、別問題でコードの問題かもしれません)
対応策
都度、前面に表示されているInternet ExplorerをVBAで掴みなおすことで、動作が安定します。
私は、エラーが出やすいサイトや環境の場合、IEの読み込み表示待ち(Call_IE_WaitTime)の時に、掴みなおすようにしています。
リモートサーバーがないエラー対策のサンプルコード
'■InternetExplorerで再度、objIEをSetしなおす。 Sub sample_IE_shell_set_objIE() Dim objIE As InternetExplorer Dim win As Object Dim winshell As Object Set winshell = CreateObject("Shell.Application") '■IEを起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '■指定したURLに飛び、Webサイトの表示を待つ objIE.navigate "https://vba-create.jp/" '■シェルオブジェクトを使用し、IEを再度掴みなおす。 For Each win In winshell.Windows If win.Name = "Internet Explorer" Then Set objIE = win Exit For End If Next '■IE読み込み表示待ち Do While objIE.Busy = True DoEvents Loop Do While objIE.readyState <> READYSTATE_COMPLETE DoEvents Loop End Sub
その他
こちらはIEを掴みなおす動きをします。
=現在開いているタブとは別のタブでページを開いた際も、こちらのコードを使用します。
=別のタブをobjIEにSetしなおさないと、現在のタブがobjIEのままになってしまいます。
=IEを掴みなおさないと、正常に動作しません。
=現在開いているタブとは別のタブでページを開いた際も、こちらのコードを使用します。
=別のタブをobjIEにSetしなおさないと、現在のタブがobjIEのままになってしまいます。
=IEを掴みなおさないと、正常に動作しません。
最新のウィンドウから取得したい場合はこちら
コメント