VBA Macroの自動化対応時のエラーハンドリング(OnErrorGoto)

Open office people working

概要

Try Catchアクティビティを使用すると、エラー発生時にワークフローが停止することを防止できます。しかし、Try Catchアクティビティがキャッチするエラーは、.Net FrameworkのSystem.Exceptionを継承した例外であるため、VBAマクロ内部で発生したエラーは対象となりません。そのため、エラーハンドリングがされていないVBAマクロ内でエラーが発生すると、VBAマクロが停止してしまいます。こうした状況を防止するには、VBAマクロ内にも別途エラーハンドリングをする必要があります。

VBA Macro OnErrorGoto

エラーハンドリングがないVBAマクロでエラーが発生した場合

エラーハンドリングがないVBAマクロでエラーが発生すると、下記のような形でVBAマクロが停止してしまいます。 (VBAマクロのエラーはTry Catchアクティビティのキャッチ対象ではないため、Try Catch内であるかどうかに関わらず停止します。)

VBA Macro OnErrorGoto

VBAマクロへのエラーハンドリング実装

上記のような状況を防止するには、VBAマクロ内にOn Error GoToステートメントを実装します(VBAエラーハンドリングの詳細な説明は、VBAのナレッジとなりますので本項では割愛します)。 Execute MacroアクティビティはVBAマクロの戻り値を受け取ることができますので、VBAマクロの処理結果に応じて、その後の処理フローを変化させることができます。

VBA Macro OnErrorGoto

※なお、上記のようにエラーハンドリングがされていても、VBAプロジェクトの設定によってはエラー発生時にVBAマクロが停止することがあります。この場合、VBAプロジェクトのエラートラップの設定が、「エラー発生時に中断」以外になっているかどうかご確認ください(「エラー発生時に中断」だと、エラーハンドリングが実装されていても止まってしまいます。)。当該設定のダイアログは、 VBAエディターのメニュー[ツール] - [オプション]で表示できます。

VBA Macro OnErrorGoto

Get articles from automation experts in your inbox

Subscribe
Get articles from automation experts in your inbox

Sign up today and we'll email you the newest articles every week.

Thank you for subscribing!

Thank you for subscribing! Each week, we'll send the best automation blog posts straight to your inbox.