Windowsのサービスに登録したRSでExcelマクロを実行させる設定

フォローする

下記Microsoftサポートページに記載の通り、非対話型オートメーション(ユーザーがOSにログオンしない状態)でのマクロ実行などはMicrosoftのサポート対象外で、Microsoft 製品に対するライセンス違反にも該当する可能性もあり、実装は推奨しておりません
そのため非対話型オートメーションの実装についてはお客様判断となります。

Microsoftサポートページ(外部)Office のサーバーサイド オートメーションについて

弊社で確認できている範囲では、下記3例の設定でWindowsサービスに登録したRSにてロボットによるExcelマクロ実行が可能となる場合があります。

① 仮想デスクトップフォルダを作成する

※RSを起動するユーザーに、仮想デスクトップフォルダへのアクセス権限を設定してください。

<作成するフォルダ>
■32BitOSで、32Bit版Excelを実行する、または64BitOSで、64Bit版Excelを実行する場合

%SystemRoot%\System32\config\systemprofile\Desktop

■64BitOSで、32Bit版Excelを実行する場合

%SystemRoot%\SysWOW64\config\systemprofile\Desktop


② ファイルシステム・コマンドラインアクセス許可を設定する

RoboServer Settingsの「セキュリティ(Security)」タブ内にある「ファイルシステムとコマンドラインのアクセスを許可(Allow File System and Command Line Access)」項目にチェックを入れてください。

mceclip0.png

※WindowsサービスからRSを起動している場合、サービスの実行ユーザーでログインして、本設定を実施するが必要あります。


③ 管理者権限でマクロ実行(RSを起動)する

WindowsサービスからRSを起動している場合、Windowsサービスの起動ユーザーに管理者権限が付与されている必要があると推測されます。

ユーザーに管理者権限が付与されているかは「whoami/groups」コマンドで確認できます。下記実行例を参考にしてください。

下記例の場合、「BUILTIN\Administrators」の属性が「拒否のみに使用するグループ」となっていますが、デフォルトで存在するAdministratorなど、管理者権限があるユーザーの場合「有効なグループ」として表示されます。

【whoami /groupsコマンド 実行例】


補足

■本件の検証中に弊社の検証環境で発生した事象

① VBA内で「Environ」関数を使用する形で何らかのファイルパスを指定すると、
  下記エラーが発生してマクロ実行ができませんでした。なお、フルパスで指定すれば回避可能です。

 

■関連問い合わせ事例にて確認した追加対処

② 先述の3つの条件(仮想デスクトップフォルダ作成、アクセス許可、管理者権限で実行)を見直しても
  マクロ実行に失敗するケースで、3つの条件に加えて次の点を見直したところ実行に成功したケース
  が確認されました。

  ・RSサービスの実行ユーザを、Office365のライセンス認証を行っているユーザへ変更する。

  当該事例ケースでは、RSサービスの実行ユーザとOffice365のライセンス認証を行うユーザが別々の
  ケースでしたが、RSサービスの実行ユーザを、ライセンス認証を行うユーザへ変更し、3つの条件の
  対処を認証ユーザに改めて実施したところ、サービス起動RSからのマクロ実行に成功したことが確認
  されました。これはExcel側の何等かの仕様が影響したものと推定されますが、他社製品であるため
  詳細は不明です。


参考記事

ロボットの実行権限について
MCからの「Execute Command Line(コマンド ライン実行)」ステップの実行でエラーとなる場合の確認事項
BizRobo!でExcelマクロを利用する上で必要な考慮ポイント