Excelを利用するワークフローで「起動されたオブジェクトはクライアントから切断されました」エラーが発生する

:white_question_mark: Question

Excelを利用するワークフローを実行すると以下の例外が発生します。

RemoteException wrapping UiPath.Excel.ExcelException: 起動されたオブジェクトはクライアントから切断されました。 (HRESULT からの例外:0x80010108 (RPC_E_DISCONNECTED)) —> RemoteException wrapping System.Runtime.InteropServices.COMException: 起動されたオブジェクトはクライアントから切断されました。 (HRESULT からの例外:0x80010108 (RPC_E_DISCONNECTED))

:light_bulb: Answer

原因

以下の複数の原因が考えられます。

1.EXCEL.EXEのプロセスが残存する
※この状況では全てのExcelファイルを閉じていても、タスクマネージャーで確認するとexcel.exeが表示されます。
2.Excelファイルを開いたまま、次のExcelファイルの処理を行っている
3.『Excelアプリケーションスコープ』アクティビティや『Excelプロセススコープ』アクティビティを入れ子にして使用している
4.PCのリソースが不足している(特に大量のデータをExcelから読み込む場合など)

解決策

1.『Excelアプリケーションスコープ』や『Excelプロセススコープ』アクティビティの直前に十分な時間の『待機』アクティビティを追加する
『待機』アクティビティをなるべく長く(例えば30秒)設定ください。

※『Excel プロセススコープ』アクティビティをご利用の場合は、プロパティ画面で、[起動のタイムアウト:オプション]に例えば30のように長い値を設定する
参考:
Excel プロセス スコープ

2.全ての『Excelアプリケーションスコープ』アクティビティや『Excelプロセススコープ』アクティビティの直後に『ワークブックを閉じる』アクティビティを入れる
3. Excelファイルに書き込むデータを少なくする
4.ネットワークドライブに保存している場合は保存場所をローカルに変更する
5. Excelを別のプロセスとして実行する
Excelの処理を別のワークフロー(xamlファイル)として切り出して頂き、
『ワークフローファイルを呼び出し』アクティビティを利用して、切り出したワークフローを呼び出します。
その際、オプション「分離(Isolation)」をオンにしてください。
6. Excelを開く前にすべてのExcelプロセスを明示的に終了させる
Excelを起動する処理(例:『Excelアプリケーションスコープ』アクティビティ)の前に『プロセスを強制終了』アクティビティを置き、
そのアクティビティでEXCEL.EXEを指定してください。
その際、『プロセスを強制終了』アクティビティの後に1. のように『待機』アクティビティを置き、
プロセスの終了処理を待つ時間を設けてください。