Execute MacroのMacro outputパラメータの使いかた

各位,

Execute MacroというActivityにMacro Outputという項目があります。これはMacroからの返り値を取得できる項目だと思いますが(以下説明抜粋)、どのように使うかがわかりません。

Macro Output - The value returned by the execution of the macro, if any. This output is retrieved as Object variables

どなたか、Execute Macroを使った、xamlとMacro のサンプルをいただけないでしょうか?
(もしくは、Macroから返り値をどうやって渡すかだけでも教えてほしいです。)

以上、よろしくお願いします。
J,

SampleMacroOutput.xaml (6.5 KB)
こんにちは!

xamlを添付しています。Macroから返り値はobjectというタイプです。 そなタイプを変換できます。

1 Like

@rajeev85

回答どうもありがとうございます。
可能であれば、サンプルxamlに記載された、"MacroOutputTrail"のマクロも頂けませんか?
Objectというタイプで受け取るのはわかりましたが、マクロ側からどうやってobjectタイプの値をxamlに渡すのでしょうか?

以上、よろしくお願いします。
J,

マクロは ここ:
Function MacroOutputTrail() As Integer
MacroOutputTrail = 100
End Function

@rajeev85

ありがとうございます!!
マクロ自体は呼べたのですが、結果が以下の通りで、戻り値がとれていません。。。
何か設定がおかしいのでしょうか?知ってたら教えてください。

以上、よろしくお願いします。

J,

@Jumbo
"Thisworkbook.MacroOutputTrail "で"Thisworkbook."を記載するのは必要ないです。
"MacroOutputTrail"ばかり 足りると思いますが。。。

@rajeev85
thisworkbookがないと、エラーで動きませんでした。。。
これがあると、動くことはメッセージボックスを出して確認しました。

@Jumbo

Macro名に"Module1.MacroOutputTrail" という書き方で、正しく動きます。
image

image

2 Likes

@lainh
なるほど、できました!
技術的にちゃんと理解しているわけではないですが、標準モジュールとしてマクロを作ってやらないと、
戻り値が正しく拾えないんですかね。

回答どうもありがとうございました!

J,

こにちは!
ありがとうございました。
私は新しい質問があるので、できればおしえていただきましょうか。

該当関数(execute macro)の入力パラメータと戻る値が同時に存在すれば、サンプルを添付いただきましょうか。

@lsktimer
入力パラメータと戻る値が同時にあるサンプル。。。SampleMacroOutput.xaml (6.7 KB)

2 Likes

誠にありがとうございます。
今、私は理解いたしました。その前、ほかのインターネットの資料を参照して、「“Division(”“10"”,““2"”)”」という内容をアクティビティ ボックス「Execute macro」に入れて、ずっとエラーを出てました。

すみません、私はもう一つ問題がありますが、ご回答いただいて、よろしいでしょうか。
状況:
エクセルマクロの戻る値が「collection」ですが、アクティビティ「Execute macro」の outputが「object」。

質問:
uipathでマクロの戻る値を取得して、表示したいですが、どうすればいいですか。

Function Thanks(ByVal str1 As String, ByVal str2 As String) As Collection

Dim mycol As New Collection

’ str1 = “Thank”
’ str2 = “You”

mycol.Add (str1)
mycol.Add (str2)

Set Thanks = mycol

End Function

for each objectでループして、item.tostringでwrite lineすれば、この例なら文字がでると思います。

ご指示通り、エラーを発生しました。
The workflow has validation errors. Review and resolve them first.

System.Activities.InvalidWorkflowException: The workflow has validation errors. Review and resolve them first. —> System.Activities.ValidationException: Compiler error(s) encountered processing expression “value”.
Option Strict On で ‘Object’ から ‘System.Collections.IEnumerable’ への暗黙の型変換はできません。

— End of inner exception stack trace —

「value」がExecute macroのアウトプットです、アレイではありませんと思います。
for each object を使いません。

これでできないでしょうか?
Convert.ToString(item)

uipath について、私は新人になっております。
簡単な問題かもしれません、すみませんですが、うまくいきません。

添付資料を送ります、ご参照ください。collectionTest.zip (14.7 KB)

@lsktimer さん

Macroからはobject型でデータが返ってくるので、明示的にキャストしてあげる必要があります。
"ThanksByStr"のマクロの場合、string arrayで変数が返ってくるので、objectをstring()に変換してみてください。(Collectionも考え方は同じです。)


result
image

鈴木さん

誠にありがとうございます。
上の指示より、うまくいきました。
ただし、戻る値が「Collection」について、やって見ましたが、
うまくいきます。

鈴木さんの指導がただしいと思います、私のテクノロジーが弱いから、
一旦問題を保留して、代わりにマクロの戻る値が「String()」に直します。
作業を続いてします。

以上。