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