ray88’s diary

お仕事で困ったとき用の自分用の覚書

UiPath マクロの実行②(引数リストから異なるデータ型の引数を渡す)

マクロに渡す引数をExcelの引数リストから渡す
■引数リスト
f:id:ray88:20210924092407p:plain
■実行するマクロのコード

Function fncTest(strArg1 As String, intArg2 As Integer, dobArg3 As Double, dateArg4 As Date) As String
Dim intResult As Integer
Dim doubleResult As Double
Dim dateTargetDay As Date   
    On Error GoTo ErrorHandler:  
  
    MsgBox strArg1    

    intResult = intArg2 + 1
    MsgBox "足し算結果:" & intResult
    
    doubleResult = 100 * dobArg3
    MsgBox "消費税計算結果:" & doubleResult
    
    dateTargetDay = #9/1/2021#    
    intResult = DateDiff("d", dateTargetDay, dateArg4)
    MsgBox "日数差計算結果:" & intResult    
    
    fncTest = "OK"
    Exit Function
    
ErrorHandler:
    fncTest = "NG"
End Function

■UiPathフロー
【ポイント】
引数の型について:「マクロの実行」アクティビティの引数の設定値の変数は30個であり、その属性はObject型
※Object型について(参考URL:「VBA を呼び出し」アクティビティの<<Object型>> - Qiita
 ロボ側でObject型で定義した変数は、「エントリメソッドのパラメーター」に指定するとそれはそのままObject型として扱われるようです。
 Int32型で定義した変数では、それはInt32型の属性を持ってます!とObject型に教えてあげつつ、扱われるようです。

【サンプルフロー】
f:id:ray88:20210924102948p:plain
f:id:ray88:20210924101620p:plain
f:id:ray88:20210924101705p:plain
f:id:ray88:20210924101802p:plain
※実行結果
f:id:ray88:20210924101910p:plain