Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@kuma16

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
image.png

受け取った変数が空っぽかどうかでエラーの有無を判定。エラーの場合はThrowアクティビティを使ってexceptionを発生させる。
image.png

結果

このように、VBAのエラーコード、エラーメッセージを表示することができる。
image.png

VBAの保守で悩まないためにもエラーハンドリングはちゃんと入れておこう。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?