UiPathで入力ダイアログを使うときに入力する内容が長くなってしまうと毎回入力するのが大変になります。
そこで、全て入力させるのではなくセレクトボックスを配置して、入力内容を選択できるようにするための方法についてご紹介します。
入力ダイアログ(InputDialog)にセレクトボックスを配置する
入力ダイアログにセレクトボックスを配置するには、プロパティの「オプション」を設定する必要があります。
Options – 選択すべきオプションの配列です。1 つの要素のみを含むように設定した場合は、テキストを書き込むためのテキストボックスが表示されます。2 つまたは 3 つの要素を含むように設定した場合は、要素がラジオボタンとして表示され、選択することができます。3 つより多くの項目を含むように設定した場合は、項目がコンボボックスとして表示され、選択することができます。このフィールドでは String Array 変数のみサポートされています。
(UiPathドキュメントより)
上記に記載がある通り、String Array変数(String型の配列)のみセレクトボックスに設定できます。 実際には、どのように設定するのか説明していきたいと思います。
変数の作成
まずは、下記の表と同じように変数を作成し、設定してください。
変数名 | 変数の型 | 既定値 |
---|---|---|
SelectList | Array of<String> | {“選択1″,”選択2″,”選択3”} |
SelectValue | String |

入力ダイアログの配置
次に、入力ダイアログ
を配置します。
アクティビティ検索欄に「入力ダイアログ」と入力するかシステム
-> ダイアログ
-> 入力ダイアログ
から配置します。
配置が完了したら、下記の表を参考にプロパティ欄の設定を行います。
項目 | 設定内容 | 備考 |
---|---|---|
オプション | SelectList | |
タイトル | “項目を選択してください。” | 表示される入力ダイアログのウィンドウ名 |
ラベル | “選択項目” | 入力ダイアログ内に表示される文字列 |
結果 | SelectValue |

テスト
テストで確認する前に、入力ダイアログ
の下に1行を書き込み
を配置します。
デフォルト設定では、お気に入りに
あるのでそこから配置します。
もしお気に入り
に無い場合は、プログラミング
-> デバッグ
-> 1行を書き込み
から配置してください。
配置が完了したら、SelectValueを入力します。

それでは、実行してみましょう。


セレクトボックスが表示され、選択した項目が表示されることを確認できました。
このように、選択項目が3つまではラジオボタン形式のセレクトボックスが表示されます。
4つ以上になると、コンボボックス(プルダウン)形式でセレクトボックスが表示されます。

画像では、SelectListの既定値を{“選択1″,”選択2″,”選択3″,”選択4”}に変更して実行しています。
これ以降はちょっとした応用について説明します。
DataTableの列をセレクトボックスに表示する方法

DataTableの列をセレクトボックスに表示するときって?
と思う方もいらっしゃると思います。例えばですが、画像のような売上表があったとして、実行する際に毎回違う商品コードや商品名ごとにデータを絞りこみたいという状況で使用します。

これくらいの商品コードや商品名であれば入力させるようにしても問題ないと思いますが、商品コードや商品名がもっと長い場合に入力ミスがあったりするため大変です。そんなときにDataTableの列からセレクトボックスを作成できると最初に選択するだけなのでとても便利です。
それではExcelやCSVファイルを読み込んで、DataTableの列からセレクトボックスを作成する方法についてご紹介します。
変数作成
まずは、下記の表と同じように変数を作成し、追加してください。
変数名 | 変数の型 | 既定値 |
---|---|---|
ReadFilePath | String | |
Sales | DataTable | |
SelectRowList | List<String> | New List(of String) |
DuplicateSales | DataTable |
DataTableは変数の型
-> 型の参照
でDataTableと入力してSystem.Data.DataTable
を選択してください。

List<String>は変数の型
-> 型の参照
でListと入力して、System.Collections.Generic.List<T>
を選択し、String型を指定してください。


CSVファイルの読み込み
今回はCSVファイルを読み込んでセレクトボックスに表示したいと思います。
説明する方法を実際に作成して試してみたい場合は、下記からコピペしてCSVを作成してください。
売上コード,商品コード,商品名,値段,個数,売上金額
001,10,りんご,100,5,500
002,20,みかん,80,5,400
003,30,ばなな,120,2,240
004,20,みかん,80,3,240
005,30,ばなな,120,3,360
シーケンスの最初にファイルを選択
を配置します。
アクティテビィ検索欄に「ファイルを選択」と入力するかシステム
-> ダイアログ
-> ファイルを選択
から配置してください。
配置が完了したら、右側のプロパティ欄の「出力」にReadFilePath
を入力します。

ファイル選択の下にCSVを読み込み
を配置します。
アクティテビィ検索欄に「CSVを読み込み」と入力するかアプリの統合(連携)
-> CSV
-> CSVを読み込み
から配置してください。
配置が完了したら、右側のプロパティ欄の「ファイルのパス」にReadFilePath
と入力し、「データテーブル」にSales
と入力します。 ヘッダーを含むにチェックが入っていない場合はチェックを入れてください。

読み込んだCSVファイルが文字化けしてしまう場合は、赤枠の「エンコーディング」に“shift-jis”と入力してください。
DataTableの列を指定する
セレクトボックスに表示したいDataTableの列を指定します。
まず、CSVを読み込みの下に代入
を配置します。
デフォルト設定ではお気に入り
にあるのでそこから配置します。
もしお気に入り
に無い場合は、ワークフロー
-> 制御
-> 代入
から配置してください。
配置が完了したら、DuplicateSales = Sales.DefaultView.ToTable(True,"商品名")
となるように入力します。

DataTable.DefaultView.ToTable(True,”列名”)で重複行を削除し、表示する列を指定出来ます。
ToTable(False,”列名”)のようにFalseを入力すると、重複行は削除せず表示されます。
DataTableの必要な列だけを表示したいときはFalseを入力し、後ろに表示したい列名を入力することで不要列を削除することも出来ます。
次に繰り返し (各行)
を配置します。
アクティテビィ検索欄に「繰り返し (各行)」と入力するかプログラミング
-> データテーブル
-> 繰り返し (各行)
から配置してください。
配置が完了したら、「コレクション」にDuplicateSales
と入力してください。
続けて、Body内にコレクションに追加を配置します。
アクティテビィ検索欄に「コレクションに追加」と入力するかプログラミング
-> コレクション
-> コレクションに追加
から配置してください。
配置が完了したら、右側のプロパティ欄を下記の表と同じになるように設定します。
項目 | 設定内容 |
---|---|
TypeAugment | String |
コレクション | SelectRowList |
項目 | row.Item(“商品名”).ToString |

最後に繰り返し(各行)の下に代入
を配置します。
配置が完了したら、SelectList = SelectRowList.ToArray
となるように入力します。

最終的なシーケンス内のフロー図は以下の通りです。

テスト
それでは実行して見ましょう。
ファイル選択ダイアログが表示されるので、読み込むCSVファイルを選択してください。


DataTableの列をセレクトボックスに表示することが出来ました。
後は選択した項目がSelectValueに格納されるので、データテーブルのフィルタ機能を使い条件に商品名 = SelectValueとなるように入力すればデータの絞り込みが出来ます。
まとめ
入力ダイアログにセレクトボックスを表示したいときは、String Array変数(String型の配列)を用意し、プロパティのオプションに設定することで、セレクトボックスを表示できます。
DataTableの列を指定して表示するやり方を今回はCSVファイルから読み込んでやりましたが、もちろんExcelファイルでも同じように作成できます。
「ここの説明がわかりにくい」や「こういった方法もありますよ」などがあればコメントしていただけるとありがたいです。その他のコメントもお待ちしております。
コメント