エクセルシートの内容をデータテーブルに読み込む際に「基になる RCW から分割された COM オブジェクトを使うことはできません。」エラーが発生する

:white_question_mark: Question

エクセルシートの内容をデータテーブルに複数回読み込む際に「基になる RCW から分割された COM オブジェクトを使うことはできません。」エラーが発生します。
事象の解決方法を教えてください。

:light_bulb: Answer

原因

オブジェクトがあるスレッドでインスタンス化され、別のスレッドがそれを使用しようとしている際にエラーが発生します。

回避策

読み込み時にスレッドを分離することで回避可能です。

■クラシックアクティビティ(『Excelアプリケーションスコープ』)をご利用の場合
1.全てのExcelアプリケーションスコープの直後に『ブックを閉じる』アクティビティを入れる

2.Excelを別のプロセスとして実行する
Excelの処理を別のワークフロー(xamlファイル)として切り出して頂き、
『ワークフローファイルを呼び出し』 アクティビティを利用して、切り出したワークフローを呼び出します。
その際、オプション「分離(Isolation)」をオンにしてください。

3.【非推奨】エクセルの読み込み前に、『プロセスの強制終了』アクティビティを置き、前のエクセルファイルを終了してください。
※StudioXをご利用の場合、オプションを表示>開発者向けアクティビティを表示にチェックマークを入れて頂くことで『プロセスの強制終了』アクティビティが利用可能です。

■モダンアクティビティ(『Excelプロセススコープ』)をご利用の場合

1.『Excel プロセス スコープ』のプロパティパネルにて、「既存のプロセスに対するアクション」を「強制終了」にします。

参考
Excel プロセス スコープ

2.『Excel プロセス スコープ』のプロパティパネルにて、「プロセスモード」を「常に新規作成」にします。

3.『Excel プロセス スコープ』内に『Excel ファイルを使用』アクティビティを入れ、プロパティパネルで「Excel ファイルを開いたままにする」のチェックをオフにします。

4.Excelを別のプロセスとして実行する
Excelの処理を別のワークフロー(xamlファイル)として切り出して頂き、『ワークフローファイルを呼び出し』 アクティビティを利用して、切り出したワークフローを呼び出します。
その際、オプション「分離(Isolation)」をオンにしてください。