前回から大分空いてしまいました。申し訳ありません。

ここからは実践編として、UiPathでの設定のハックというか、私が知って役立ったことを記載していきます。
UiPathを使っている方に向けて書きますので、
そうで無い方には何のこっちゃということもあると思いますが、お許し下さい。

困ったことの解決方法を書くことで、他に困った方、もしくは未来の自分に向けています。

【Input dialog(入力ダイアログ)アクティビティについて】

UiPathでの操作者とのインターフェイスは「Input dialogアクティビティ」です。
Web画面での入力項目(ユーザIDやパスワード)にも使いますが、
メニュー選択フォームのように使うこともできます。

1.選択肢A
2.選択肢B
3.選択肢C

みたいなイメージですね。

その際には Input Dialogのオプション値に使用する変数を以下のように設定します。

・配列型にする(変数型の覧にString[]と表示される)
↓具体的には、Array of T を選択して、 Stringを選ぶ。

↓デフォルト(既定値)に {“1.選択肢A”,”2.選択肢B”,”3.選択肢C”}を入力

「配列」って始め使い慣れないと、何だろう?と思いますが、こういう風なイメージです。

result(結果)は、配列では無いString型です。沢山ある行列から一つを選んでいるからですね。

————————————————————————————————-

さて、選択肢が流動的(都度変わる)だったり、数が大量だったりしたら、どうすれば良いのでしょうか?
この場合は、いったん選択肢をDataRow型に読み込んで処理します。
このDataRowは、ざっくり言うとDataTableの1行だけのデータです。

具体的な事例をあげます。
下の様なExcelの表により処理を選択するケースです。
選択した後、右列の色々(保存フォルダやらファイル名やら)を取り込みたいとします。

【Excel上の準備】
Excelの処理一覧のシートを準備します。(元シートになります)
InputDialogに使うために、もう一つ別のシートを作ります。
このシートでは、元のシートを横型に展開します。
(colomun()で列番号・vlookupで列番号をkeyに選択肢を表示する)

そこからは、以下のようにUiPathを設定します。

1. 横型の方のシートを読み込む(1行のみ…表題行含めて2行)

2. InputDialogに使う変数として配列型のStringを用意する。
Assign(代入)元を DT_List.rows(0).ItemArray.Cast(Of String)().ToArray
代入先は配列型のString

3. InputDialogで、「2の変数」を表示する。

4. 元シート(縦型)をDataTableに読み込む

5. ユーザが選択したkeywordを元に「4のDataTable」を抽出し、1行のDataTableにする
Assign(代入)元を DT_Syori.Select(“[項目]= ‘”+SearchWord + “‘” ).copytodatatable
(Assing先はDataTable)

6. ここからは、5のDataTableを元に必要な項目を読み込む
例:Assign(代入)元を DT_SyoriFilter.Rows(0)(“出力フォルダ”).ToString とする。

↓こんな感じです。

 

これが出来ると結構便利です。
お試し下さい。