【RPAにエラーは付き物です。エラーをうまく扱えばRPAの扱いそのものを向上させることができます】
今回の記事では、エラーが発生した時の対象方法について複数解説します
エラー対策のツボである「原因を突き止めやすくしておく」、「エラーが発生した場合の影響を軽微にとどめる」工夫に活かしていただきたいと思います!
リトライを行う
Power automate desktopの各アクションでは下の画像のように、エラーが発生した時の対処が指定できるようになっています
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-27.png)
上の画像の箇所をクリックすると下の画像の画面が開きます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-28.png)
デフォルトでは「エラーが発生した場合にアクションを再試行する(リトライ)」はオフになっています
リトライをオンに設定することで、エラー発生後も指定回数・間隔にて該当アクションを再実行できます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-30.png)
別ルートの実行
ラベルアクションを使用することで、エラー発生時の処理の流れを事前に指定した内容に変えることができます
まずはラベルをフローの適切な場所に設定しましょう
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-31.png)
今回はラベルを「エラー発生」のメッセージを表示するアクションの前に置きます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-32.png)
こうすることで「Excelの起動アクション」がエラーになった場合、こちらのラベル:myErrorにフローが飛び、メッセージを表示できるようします
ラベルを設定したので、今度は「Excelの起動アクション」のエラー発生時の設定を変えます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-33.png)
「フロー実行を続行する」を選択したうえで、「ラベルに移動」を選択します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-34.png)
上の画像の「ラベルの選択」は先ほど設定したラベルを選択します
これでフローを実行してみます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/c62c3f828abdb4fcf7061797d85d5de9.gif)
本来は「エクセルの起動」アクションの箇所でエラーメッセージが出て止まります
今回はラベルを事前に仕込んであるので、フローの流れが変わり、ラベルから下が実行されるようになっています
エラーメッセージ表示
エラーメッセージそのものをフローの流れの中で表示したいときには「最後のエラーを取得」アクションを使用します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-35.png)
「最後のエラーを取得」アクションにてエラー内容を変数に格納することができます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-36.png)
こちらの変数(上記画像ではLastError)をメッセージボックスに格納すればOKです
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-37.png)
これで前述のラベルと組み合わせればエラーメッセージがエラー発生時に表示できるようになります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-38-644x280.png)
まとめてエラー対策
今までの解説で「いちいちフローごとにエラー対策はできない・・・」と感じた方もいらっしゃると思います
その場合には「ブロックエラー発生時」アクションを使用します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-39.png)
このアクションで下の画像のように「End」の箇所までをまとめてエラー対策を行えます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-40.png)
まとめてエラー対策を行う方法としては「サブフロー」を実行する方法がおすすめです
まず事前にサブフローを作成しておきます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-41.png)
次に「ブロックエラー発生時」アクションの編集をクリックします
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-42.png)
次に開いた画面では、以下の箇所をクリックします
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-43-644x187.png)
ここで「サブフローの実行」を指定できるようになります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-44.png)
こちらで事前に作成したサブフローを指定してください
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-45-644x123.png)
これでEndで囲んだブロック内でエラーが発生した場合は一括で同じ処理が適用されます
ログファイル作成
エラー対策を実行するのに有効な手段として、エラー発生履歴を管理しておくというのもあります
先ほどのブロックでのエラー対策にてサブフローを実行しました
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-46.png)
こちらのサブフローに、上記の画像のような発生時間をファイル名にした「ログファイル」を出力するフローを作成します
ログファイルに入れる内容としては「エラー内容」「発生日時」になります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-47.png)
ですので「最後のエラーを取得」「現在の日時を取得」アクションで「エラー内容」と「現在時刻」を取得します
取得した現在時刻は「datetimeをテキストに変換」アクションでファイル名に盛り込める形に変換しておきます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-48.png)
取得した「エラー内容」、変換した「現在時刻」はリストに格納しておきます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-49.png)
次に空のCSVファイルを作成します
「Excelの起動アクション」で新規にファイルを作成し、変換した「現在時刻」を盛り込んだファイルパスにてCSVファイル形式で保存します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-50.png)
最後に「CSVファイルに書き込む」アクションで先ほど作成したリストを空のCSVファイルに書き込みます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-51.png)
これでエラー発生都度、ログファイルを作成するフローが完成です
![](https://analytic-vba.com/wp/wp-content/uploads/2023/05/image-52-644x124.png)