Excelアプリケーションスコープ多用によるエラーの対策方法について

ブログをご覧いただきありがとうございます。
RPAロボットの開発を行っております青柳です。

開発を始めてから半年が経ちましたが、これまで様々なエラーと向き合ってきました。
今回はその中でも一番苦労した「Excelアプリケーションスコープ」アクティビティ
エラーの対処方法について書いていこうと思います。

皆さんはExcelアプリケーションスコープのアクティビティで下の画像のような
エラーに遭遇したことは無いでしょうか?

エラーの文言はこれ以外にも様々あるのですが、このエラー文の最後に
「HRESULTからの例外」と書かれたエラーに私はとても苦労させられました…

苦労させられた理由としては、
①エラー文の意味が分からない。
②意味が分からないので対策ができない。
以上の2つがあげられます。

しかし、この半年間で色々な検証を行った結果、エラーが起こる原因と対策が分かってきました。

1.原因

大抵の場合は下の画像のようにExcelアプリケーションスコープを連続で使用した際に起こります。

そして、1つ目のExcelアプリケーションスコープが終了しているにも係わらず、Excelのプロセスが残ったままになることがあります。

この状態で2つ目のExcelアプリケーションスコープを実行しようとすると、1つ目のExcelアプリケーションスコープで
使用したExcelのプロセスが残ってしまっているため実行できなくなってしまいます。

2.対策

このエラーの対策として私が行っていることは2つあります。

①2つのExcelアプリケーションスコープの間に待機アクティビティを入れる。
(普段の開発時は待機時間を3秒から5秒くらいで設定しています。)
3秒から5秒またはそれ以上待機している間に、Excelのプロセスが消滅します。
しかし、消滅するまでの時間は実行環境によって変わりますので注意が必要です。

②2つのExcelアプリケーションスコープの間に「プロセスを強制終了(Kill Process)」アクティビティを入れる。
このアクティビティを使用することでプロセスを強制的に消すことができます。

プロパティのプロセス名に「”Excel”」と設定するのを忘れないようにしてください。

この①と②を組み合わせて下の画像のように配置することでエラーが起こらなくなりました。

このエラーはロボットの実行環境により起こったり、起こらなかったりするようです。

なので、この2つの対策で確実にエラーが無くなる保証はできませんが、試してみる価値はあると思います。

試す際はこのブログを参考にしていただければと思います。