編集

【UiPath】CSVファイルを特定の列をキーに分割する

2025/09/12

今回は、「CSVファイルを分割する」という単純なロボットを作成します。CSVを読み込んでフィルターをかけて出力する...という単純な処理です。

使用するのは『CSVを読み込み』、『データテーブルをフィルター』、『CSVに書き込み』の三つのアクティビティなのですが、私が使用しているUiPathのバージョンの都合により「クラシックアクティビティ」と「モダンアクティビティ」の2種類を使用しています。

また、個人でご利用のCommnityEdition版と会社でご利用のEnterprise版では見た目や操作なども全然違うので分かりにくいところもあるかと思います。環境差異については何卒ご了承ください。

開発環境

  • UiPath Studio Community Edition
  • Excel 2019

事前準備

  1. Excelで「設定情報.xlsx」を用意します。内容は下記の通りです。
    設定情報.xlsx
  2. Excelで「配布先マスタ.xlsx」を用意します。内容は下記の通りです。
    この配布先マスタに記載がある3件分のCSVを出力します。
    範囲をテーブル化し、テーブル名を「配布先テーブル」とします。
    配布先.xlsx
  3. CSVで「全データ.csv」を作成します。
    内容は下記の通りです。
    今回のテストケースでは、文字コードをUTF-8のBOM付きにしています。
    全データ.csv
    全データ.csv(Excelで表示したとき)
  4. UiPath Studioで「空のプロジェクト」を用意します(プロジェクト名はお好みで)。
  5. 各ファイルをプロジェクトフォルダの外側に用意します。
    フォルダ構成

製造

  1. Main.xamlを開き『フローチャート』アクティビティを配置します。
    フローチャート
  2. 設定情報の読込を行います。フローチャートの中に『シーケンス』アクティビティを配置します。設定情報の読込については下記記事を参照してください。ここでは詳細を割愛します。
    【UiPath】設定情報ファイルをDictionary型で取り込む | ともゆきの独り言(雑記ブログ)

    【UiPath】設定情報ファイルをDictionary型で取り込む | ともゆきの独り言(雑記ブログ)

    業務自動化の手法としてExcelVBAだけではなくRPA(UiPath)についても備忘録として残していこうと思っています。実際の業務の処理をRPAで操作する前に、まずはRPA開発のテンプレートとも言える「設定情報ファイルの読み込み」からご紹介したいと思います。

  3. ここからCSV分割の処理を行います。
    フローチャートの中に『シーケンス』アクティビティを配置します。
    名前を「CSV分割」にします。
  4. まずは「配布先マスタ.xlsx」の読込を行います。
    配置したCSV分割シーケンスの中に『Excelプロセススコープ』アクティビティを配置します。「実行」枠は不要なので削除します。
  5. Excelプロセススコープの中に『Excelファイルを使用』アクティビティを配置します。
    Excelファイル:設定情報のキーを入力します。
    変更を保存:チェックを外します。
    存在しない場合ファイルを作成:チェックを外します。
    テンプレートファイル:配布先マスタ.xlsxを指定します。
    ※テンプレートファイルを指定するとExcelファイルを使用の中で扱うアクティビティの情報が持ってきやすくなります。
  6. Excelファイルを使用の中に『範囲を読み込み』アクティビティを配置します。
    範囲:⊕から配布先テーブル[表]を選択します。
    先頭行をヘッダーとする:チェックを入れます。
    表示行のみ:チェックを入れます。
    保存先:配布先dt
    ※入力ボックスにカーソルを当ててCtrl+Kで新しく変数を作ると、その項目に対応した型の変数が作成できます(この場合、DataTableで作成されます)。
    Excelプロセススコープ
  7. 次に「全データ.csv」の読み込みを行います。
    Excelファイルを使用の外に『CSVを読み込み』アクティビティを配置します。このアクティビティは「モダンアクティビティ」になります。私のUiPathにはクラシックアクティビティのCSVを読み込みがありませんでした...。
    CSVを読み込み
    読み込み元リソースファイル:フォルダアイコンから「全データ.csv」を選択します。
    固定でフルパスが入力されるので、フルパスの部分を設定情報のキーに書き換えます。
    式エディター
    プロパティエリアの出力、CSVの範囲にCtrl+Kで「dt」を入力します。
    CSV読み込みのプロパティ
  8. ここから「全データ.csv」の分割を行います。
    『繰り返し(データテーブルの各行)』アクティビティを配置します。
    データテーブル:配布先dt
  9. 繰り返しの中に『データテーブルをフィルター』アクティビティを配置します。
    データテーブル:dt
    フィルターを設定:画像の通り
    フィルター処理後のデータテーブル:抽出dt
    繰り返し(データテーブルの各行)
    フィルターウィザード
  10. 繰り返しの中に『条件分岐』アクティビティを配置します。
    条件:抽出dt.Rows.Count > 0
    ※データテーブル.Rows.Countはデータテーブルの行数を調べる構文です。
  11. 条件分岐の中に『代入』アクティビティを配置します。
    保存先:出力ファイルパス(String型)
    保存する値:設定情報("OUTPUT_FOLDER").ToString & "\" & CurrentRow("配布先").ToString & ".csv"
  12. 条件分岐の中に『CSVに書き込み』アクティビティを配置します。
    このアクティビティは「クラシックアクティビティ」になります。
    書き込み元:抽出dt
    書き込み先ファイル:出力ファイルパス
    ヘッダーを含める:チェックを入れてください。
    条件分岐(if)
  13. 条件分岐のElseには今回何も指定せずで大丈夫です。デバッグ実行して、実行結果を確認しましょう。

実行結果

日付フォルダが作成され、その中に「配布先.xlsx」で指定した3件分のCSVファイルが分割されていることを確認できます。

分割されたCSVファイル
CSVファイルの中身

サンプルMain.xaml

サンプルMain.xaml

以上。