Excelプロセススコープにて「HRESULTからの例外:0x800401A8」のエラーが発生した際の原因と対処法を備忘として記録。
エラーが発生したときの状況
下記の画像例のように、Excelプロセススコープを立て続けに使用していたときに発生。
※実行環境によるところが大きく、上記のようにフローを組んだからといって必ず発生するというものでもありません。
原因
1つ目のExcelプロセススコープで使用したプロセスを閉じているにも関わらず、そのプロセスを2つ目のExcelプロセススコープでも使用しようとしてエラーが出るものと考えられる。
対応策
方針としては、次の2つ。
- ひとつのExcelプロセススコープに処理をまとめる
- Excelプロセススコープごとに新規のプロセスを立ち上げる
1.ひとつのExcelプロセススコープに処理をまとめる
立て続けにExcelプロセススコープを使用しないように、ひとつのExcelプロセススコープ内で処理を完結させればいいじゃない!という考えのものでの方針。
ただ、フローを分けて実装したいなどの場合は、可読性を考慮するとこの方針は得策ではないかもしれません。
その場合は、2.の方針を検討してみてください。
2.Excelプロセススコープごとに新規のプロセスを立ち上げる
そもそもの原因は、すでに閉じたプロセスを再利用しようとして起こっているので、Excelプロセススコープごとに新しいプロセスを立ち上げて実行できれば、上記のようなエラーは発生しなくなる。
Excelプロセススコープごとに新しいプロセスを立ち上げるようにするのは、[Excelプロセススコープ]のプロパティにて、プロセスモードを[常に新規作成]と設定すればよい。
また、すべてのExcelプロセススコープで同様の設定にしたい場合は、[プロジェクト設定]のアクティビティ設定[Excelモダン]にて、プロセスモードのデフォルトの値を[常に新規作成]に変えてあげればいい。
参考