IE自動制御時のエラー「オートメーション エラー システムのシャットダウンは既にスケジュールされています。」について
未読分:4件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#4 2015年2月4日(水)11時35分 From: VBAマスター | 返事 削除 変更 |
オートメーションエラーの原因はCreateObject関数でIEオブジェクトを生成したあとにobjIEなどを使いまわすのは問題ないんですが、こいつをプロシージャレベルで生成→IE操作→IE操作終了→IEオブジェクト破棄にした場合、またそのあとに同じようにIEオブジェクトを生成するとこちらのエラーが発生します。 対策としては変数の適用範囲(スコープ)をファイルを閉じるまで有効にしといて処理をするのと、IEを開いているものがあれば、ShellオブジェクトからIEを掴んで操作といった感じですね。 |
Message#3 2015年2月4日(水)11時31分 From: ミラクル | 返事 削除 変更 |
VBAジョニーのメッセージ(#2)への返事 > そういうものです。 > > 回避するなら、シャットダウンがスケジュールされないよう、ieをひとつ起こしっぱなしにする。 > > あるいは、Newで作るのではなく、iexplore.exeを起動して、shellwindowsコレクションからそれを捕捉する。 書き込み感謝いたします。 >ieをひとつ起こしっぱなしにする。 なるほどです。 ダミーのIEインスタンスを起動して処理の最初から最後まで立ち上げておくようにしました。 今のところは回避できております。 ありがとうございます。 |
Message#2 2015年2月4日(水)11時30分 From: VBAジョニー | 返事 削除 変更 |
そういうものです。 回避するなら、シャットダウンがスケジュールされないよう、ieをひとつ起こしっぱなしにする。 あるいは、Newで作るのではなく、iexplore.exeを起動して、shellwindowsコレクションからそれを捕捉する。 |
Message#1 2015年2月4日(水)11時28分 From: ミラクル | 返事 削除 変更 |
失礼致します。 Excel VBAにて書かれたIntenet Explorerを自動制御するツールを使って自社サイトのテストを行っています。 ある程度連続の操作をさせていると 「オートメーションエラーです。システムのシャットダウンは既にスケジュールされています。」 というエラーが発生する場合があります。 発生タイミングはIEを一旦Quitした後に、新しいインスタンスをNewするとき(つまり起動時)だと思われますが原因がわかりません。 対応策としては、当エラートラップ後に プロセス「iexplorer.exe」をkillすれば同エラーは発生しなくなります。 ですが、原因と仕組みを知りたいところです。 ご存知の方がいらっしゃいましたらご教示ください。 質問するにして足らない情報があるとは思いますが 何卒ご教示のほどよろしくお願いいたします Source Code(断片です) '-- Start Dim WithEvents obj_ie as InternetExplorer 〜 Set obj_ie = New InternetExplorer obj_ie.Navigate SOME_URL ~ '-- Quit obj_ie.Quit Set m_obj_ie = Nothing ■動作環境 Windows 7 64bit Office 2007 / 2010 IE Version 10,11 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降