UiPathでExcelVBAのエラーをハンドリングする
UiPathでVBAエラーをハンドリングすることの重要性
仕事柄、UiPathからExcelVBAを呼び出して業務を自動化することがよくあるが、ここでよく困ることがある。
UiPath側でVBAのエラーハンドリングを組み込んでおかないとUiPathが異常を検知できずにずっと停止してしまうのである。
手動でUiPathを起動するなら最悪エラーウインドウを見て気付けるが、自動実行で夜間に動くものだと朝になってやっと気づくなんてことも…
ということでUiPathからVBAエラーを最低限検知できる仕組みを紹介する
VBA側の準備
以下が例、重要なのはVBAの中でもちゃんとエラーハンドリング処理を入れてUiPathに返す値を定義すること。
Function vbaError(stErrorFlg As String)
On Error GoTo dummyError
If stErrorFlg = "True" Then
i = 1 / 0 '0除算で強制的にエラーを起こす
End If
vbaError = "" 'エラーがない場合は""を返す
Exit Function
dummyError:
vbaError = Err.Number & "," & Err.Description 'エラーが発生したときにUiPathに返すエラー内容
End Function
(Errをそのまま返したいところだがErrObjectクラスはインスタンス化できないらしい…
こちらのサイトを参考にしながらクラス定義してあげればできなくは無いんだろうけど…)
UiPath側の準備
あとは、UiPath側ではこのようにExecuteMacroアクティビティのOutputを適当な変数で受け取ればOK
受け取った変数が空っぽかどうかでエラーの有無を判定。エラーの場合はThrowアクティビティを使ってexceptionを発生させる。
結果
このように、VBAのエラーコード、エラーメッセージを表示することができる。
VBAの保守で悩まないためにもエラーハンドリングはちゃんと入れておこう。
Author And Source
この問題について(UiPathでExcelVBAのエラーをハンドリングする), 我々は、より多くの情報をここで見つけました https://qiita.com/kuma16/items/c129b33560e7189334db著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .