last update 2017年2月7日 21:50

SeleniumBasicがタスクスケジューラから起動できない場合の対処

プチハマりしたんで日本語情報を書いておきます。

SeleniumBasic を使った Excel VBA をタスクスケジューラで起動しようとしたら、

「実行時エラー ‘91’: オブジェクト変数または With ブロック変数が設定されていません」
seleniumbasic_on_task_scheduler_3_sh

というエラーが出て困っていました。

具体的には、

Dim driver As WebDriver
Set driver = New ChromeDriver

の段階で、ChromeDriver オブジェクトの生成に失敗して「Nothing」になってしまう。という症例です。
seleniumbasic_on_task_scheduler_4_sh

Excel VBA を単体で実行すれば ChromeDriver オブジェクトが生成されるのに、タスクスケジューラ経由で実行したときだけこのエラーが出る。ということで頭を悩ませていたんですが、色々検索してみると、FirefoxDriver でも同じ症例が出ているケースがありまして。

結局、ユーザー権限で SeleniumBasic をインストールしていたのが原因。と判明。

対策方法は2ステップ。

1.SeleniumBasic を管理者権限でインストールする。
seleniumbasic_on_task_scheduler_1_sh

2.タスクスケジューラの「全般タブ」で、「最上位の特権で実行する」にチェックを入れる
seleniumbasic_on_task_scheduler_5_sh

これで、タスクスケジューラからでも SeleniumBasic を使ったVBAマクロを実行できるようになりました。

んー、タスクスケジューラにおける実行時ユーザーアカウントで SeleniumBasic をインストールしてあっても、内部的に色々あって不十分なんですね。

ちなみに今回の件では、他にも、「実行時エラー '429': ActiveX コンポーネントはオブジェクトを作成できません。」というエラーが出た記憶もあります。

参考情報:

コメントを記入