Excelマクロに引数を与えるとエラーが発生する

マクロ起動1.zip (23.8 KB) マクロ起動2.zip (24.3 KB) UiPathからExcelマクロを起動する際に、引数を渡したいです。

添付の2つのロボは、いずれもロボ本体から"OK"というパラメータを渡し、マクロ側でMsgBoxで表示させたあと、簡単なテーブル挿入を行うものになっています。

マクロ起動2.zipのように、マクロパラメータに引数を{uipathMsg}とセットすると、正常にマクロが実行され、UiPathも正常終了します。

しかしマクロ起動1.zipの様にマクロ名に引数を"Macro1(“”“+uipathMsg+”“”)"のように定義すると、なぜかMsgBoxが2度表示された上でテーブル挿入は失敗し、ロボで以下のエラーが発生します。

「マクロを実行: マクロ ‘Macro1(“OK”)’ を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」

テスト環境としては以下となります。
Studio 2018.4.1 - 12/12/2018 Enterprise Edition
Microsoft Windows 10 Enterprise 64 ビット
.NET Framework バージョン 4.7.2 or later
Microsoft Office Professional Plus2016

実際の業務環境では、UiPathのバージョンが古く、2017.1.6435を利用しており簡単にバージョンアップができないのですが、このバージョンではマクロパラメータの設定項目がなく、マクロ起動1.zipの方法しかとれないため、この方法で実現したいと思うのですが難しいでしょうか。
ちなみに古いバージョンでも、同じエラーと事象が発生しています。

よろしくお願い致します。

まずは引数なしのマクロを実行し、問題なければセキュリティ設定は問題ないと判断。
数値を引数としたマクロ Macro3(5) を実行してみて、VBAのメッセージボックスで値が表示できれば、引数を渡せると判断。
文字列を引数としたマクロ Macro4(‘5’) (シングルクオーテーションで囲む)を実行してみて、同様に表示できればシングルクオーテーションで囲むほうが無難です。(古い環境無いので検証願います。)
これがエラーとなるなら Macro5(“5”) (ダブルクオーテーションで囲む。記述例は “Macro(”“5"”)" かな)を実行して同様に確認。問題なければマクロ指定記述の誤りと判断できます。

切り分け方法のアドバイスありがとうございます。

①まずは引数なしのマクロを実行し、問題なければセキュリティ設定は問題ないと判断。
→引数なしのマクロ実行は問題ありませんでした。

②数値を引数としたマクロ Macro3(5) を実行してみて、VBAのメッセージボックスで値が表示できれば、引数を渡せると判断。
→VBAのメッセージボックスで値が表示されます。ただし1回しかMsgBoxを書いていないのに2回表示されます。

③文字列を引数としたマクロ Macro4(‘5’) (シングルクオーテーションで囲む)を実行してみて、同様に表示できればシングルクオーテーションで囲むほうが無難です。
→以下のエラーになります。
マクロを実行: マクロ ‘Macro4(‘5’)’ を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。

④これがエラーとなるなら Macro5(“5”) (ダブルクオーテーションで囲む。記述例は “Macro(”“5"”)" かな)を実行して同様に確認。問題なければマクロ指定記述の誤りと判断できます。
→VBAのメッセージボックスで値が表示されます。ただし1回しかMsgBoxを書いていないのに2回表示されます。

②、④は、2回表示されるのは別として引数は渡せています。
また、VBAにMsgBox一行だけを記載している場合はUiPathはエラーになりません。
引数を渡したからエラーが発生したのではなく、MsgBoxの下に以下(テーブルの挿入)を記述するとエラーが発生することがわかりました。

Range("A1").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1").CurrentRegion, , xlYes).Name = _
    "テーブル1"
Range("テーブル1[#All]").Select
Selection.AutoFilter

マクロ側の問題なのですかね・・

メッセージボックスが2回表示されるのは、テーブル化またはフィルターかけることで再実行されているように思えます。
マクロ名を「AAA」や 「フィルターをかける」などに変えて試してみてください。(Anto_Openなどは特殊なマクロ名になります)

テーブル化も必須かもしれませんが、フィルターかけるだけなら
ActiveSheet.Range(“A1”).AutoFilter
の1行で済みます。
(同様にテーブル化も2行目の1行だけで可。1、3行目のSelectはコメント化で問題ないと思います。)