Jumbo
(Jumbo Suzuki)
1
各位,
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
Jumbo
(Jumbo Suzuki)
3
@rajeev85
回答どうもありがとうございます。
可能であれば、サンプルxamlに記載された、"MacroOutputTrail"のマクロも頂けませんか?
Objectというタイプで受け取るのはわかりましたが、マクロ側からどうやってobjectタイプの値をxamlに渡すのでしょうか?
以上、よろしくお願いします。
J,
マクロは ここ:
Function MacroOutputTrail() As Integer
MacroOutputTrail = 100
End Function
Jumbo
(Jumbo Suzuki)
5
@rajeev85
ありがとうございます!!
マクロ自体は呼べたのですが、結果が以下の通りで、戻り値がとれていません。。。
何か設定がおかしいのでしょうか?知ってたら教えてください。
以上、よろしくお願いします。
J,
@Jumbo
"Thisworkbook.MacroOutputTrail "で"Thisworkbook."を記載するのは必要ないです。
"MacroOutputTrail"ばかり 足りると思いますが。。。
Jumbo
(Jumbo Suzuki)
7
@rajeev85
thisworkbookがないと、エラーで動きませんでした。。。
これがあると、動くことはメッセージボックスを出して確認しました。
lainh
(HIGASIKUZE TAKAYOSI)
8
@Jumbo
Macro名に"Module1.MacroOutputTrail" という書き方で、正しく動きます。
2 Likes
Jumbo
(Jumbo Suzuki)
9
@lainh
なるほど、できました!
技術的にちゃんと理解しているわけではないですが、標準モジュールとしてマクロを作ってやらないと、
戻り値が正しく拾えないんですかね。
回答どうもありがとうございました!
J,
lsktimer
(lishengkui)
10
こにちは!
ありがとうございました。
私は新しい質問があるので、できればおしえていただきましょうか。
該当関数(execute macro)の入力パラメータと戻る値が同時に存在すれば、サンプルを添付いただきましょうか。
@lsktimer
入力パラメータと戻る値が同時にあるサンプル。。。SampleMacroOutput.xaml (6.7 KB)
2 Likes
lsktimer
(lishengkui)
12
誠にありがとうございます。
今、私は理解いたしました。その前、ほかのインターネットの資料を参照して、「“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
Jumbo
(Jumbo Suzuki)
13
for each objectでループして、item.tostringでwrite lineすれば、この例なら文字がでると思います。
lsktimer
(lishengkui)
14
ご指示通り、エラーを発生しました。
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 を使いません。
Jumbo
(Jumbo Suzuki)
15
これでできないでしょうか?
Convert.ToString(item)
lsktimer
(lishengkui)
16
uipath について、私は新人になっております。
簡単な問題かもしれません、すみませんですが、うまくいきません。
添付資料を送ります、ご参照ください。collectionTest.zip (14.7 KB)
Jumbo
(Jumbo Suzuki)
17
@lsktimer さん
Macroからはobject型でデータが返ってくるので、明示的にキャストしてあげる必要があります。
"ThanksByStr"のマクロの場合、string arrayで変数が返ってくるので、objectをstring()に変換してみてください。(Collectionも考え方は同じです。)
result
lsktimer
(lishengkui)
18
鈴木さん
誠にありがとうございます。
上の指示より、うまくいきました。
ただし、戻る値が「Collection」について、やって見ましたが、
うまくいきます。
鈴木さんの指導がただしいと思います、私のテクノロジーが弱いから、
一旦問題を保留して、代わりにマクロの戻る値が「String()」に直します。
作業を続いてします。
以上。