SeleniumBasicがタスクスケジューラから起動できない場合の対処
2024年8月9日
プチハマりしたんで日本語情報を書いておきます。
SeleniumBasic を使った Excel VBA をタスクスケジューラで起動しようとしたら、
「実行時エラー ‘91’: オブジェクト変数または With ブロック変数が設定されていません」
というエラーが出て困っていました。
具体的には、
Dim driver As WebDriver Set driver = New ChromeDriver
の段階で、ChromeDriver オブジェクトの生成に失敗して「Nothing」になってしまう。という症例です。
Excel VBA を単体で実行すれば ChromeDriver オブジェクトが生成されるのに、タスクスケジューラ経由で実行したときだけこのエラーが出る。ということで頭を悩ませていたんですが、色々検索してみると、FirefoxDriver でも同じ症例が出ているケースがありまして。
結局、ユーザー権限で SeleniumBasic をインストールしていたのが原因。と判明。
対策方法は2ステップ。
1.SeleniumBasic を管理者権限でインストールする。
2.タスクスケジューラの「全般タブ」で、「最上位の特権で実行する」にチェックを入れる
これで、タスクスケジューラからでも SeleniumBasic を使ったVBAマクロを実行できるようになりました。
んー、タスクスケジューラにおける実行時ユーザーアカウントで SeleniumBasic をインストールしてあっても、内部的に色々あって不十分なんですね。
ちなみに今回の件では、他にも、「実行時エラー '429': ActiveX コンポーネントはオブジェクトを作成できません。」というエラーが出た記憶もあります。
参考情報: