Uipath|フィルターでExcelを分割するワークフロー

ExcelファイルにフィルターをかけながらExcelを分割してるけど、時間がかかるし苦痛だな……。

といった悩みを持つ人に向けて、UiPathで解決する方法を解説しています。

この記事では

・フィルターをかけてExcelを分割する方法
・1本の本格的なワークフローの作り方

がわかります。

動作条件
■動作条件
Excelがインストールされている必要があります。

■以下の環境で検証しています。
OS:Windows10
UiPath Studio:バージョン2022.4.3 Community License
(クラシックデザインエクスペリエンス)

それでは、頑張ってワークフローを作成しましょう!

この記事を書いた人
この記事を書いた人
こさい
こさい

(株)完全自動化研究所代表のこさいです。

1) エンジニア歴25年超。RPA支援8年超
2) RPA関連の書籍を6冊出版。
3)ご質問・お仕事のご依頼はこちら

業務イメージ

[SalesDetailData.xlsx]は商品番号(ItemNo)ごとの売上明細表に担当者コード、担当者名、顧客名が付いています。この[SalesDetailData.xlsx]を担当者別に個別のファイルに分割するオートメーションが本記事のターゲットです(図1)。

図1:[SalesDetailData.xlsx]を分割する

ワークフロー作成

作成準備

ワークフローを作成する前の準備を行ってください。

STEP1

UiPath Studioを起動し、新たにプロジェクトを作成する。

STEP2

作成したプロジェクトフォルダーの中に、サンプルファイル[SalesDetailData.xlsx]をコピーする。サンプルファイルは下のボタンをクリックするとダウンロードできます。

“SalesDetailData.xlsx” をダウンロード SalesDetailData.xlsx – 553 回のダウンロード – 44.53 KB

これで準備は完了です。

作成手順

それでは、ワークフローを作成してください。まずは全体の枠を作ってください。

全体の枠を作る

STEP1

Main.xamlを開く。

クラシック デザイン エクスペリエンスで解説しています

この記事はクラシック デザイン エクスペリエンスで解説しています。この記事を参考にしてワークフローを作成する場合は、以下の記事を読んでUiPath Studioをクラシック デザイン エクスペリエンスに変更してください。

STEP2

[フローチャート(Flowchart)]アクティビティを追加し、名前を「Main」に変更する。

STEP3

[Main]フローチャートをダブルクリックして展開し、[Main]フローチャート上に以下の3つのアクティビティを追加し、順番に流れ線で結ぶ(図2)。

[Excel アプリケーションスコープ]アクティビティを追加し、 表示名を「売上明細Excelを読み込む」にする。

[シーケンス]アクティビティを追加し、表示名を「データ加工」にする。

[シーケンス]アクティビティを追加し、表示名を「担当者別Excel書き出し」にする。

図2を参考に[Start]→[売上明細Excelを読み込む]→[データ加工]→[担当者別Excel書き出し]を流れ線で結ぶ。

図2:[Main]フローチャート

売上明細Excelを読み込む

[SalesDetailData.xlsx]を読み込み、データテーブル[SalesDetailData]に出力するワークフローを作成します。

STEP1

[売上明細Excelを読み込む]をダブルクリックし、アクティビティを展開する。[Browse for File](フォルダー型のアイコン)をクリックして、[SalesDetailData.xlsx]を選択する([ブック パス]プロパティに直接入力してもよい。この場合「“(ダブルクォーテーション)」でパスをくくるのを忘れずに)(図3❶)。

STEP2

[売上明細Excelを読み込む]のプロパティ[可視]のチェックを外す。

STEP3

[実行]の中に[範囲を読み込み]アクティビティを追加する(図3❷)。

図3:[売上明細Excelを読み込む]のワークフロー

STEP4

[範囲を読み込み]アクティビティの[データテーブル]プロパティの入力ボックスにカーソルをあてた状態でCtrl+Kキーを押し、[変数を設定]に「SalesDetailData」と入力し、Enterキーを押す。データテーブル[SalesDetailData]が作成される(図4)。

図4:[範囲を読み込み]アクティビティのプロパティ

STEP5

[変数]パネルを開き、[SalesDetailData]のスコープを[Main]に変更する。

データ加工

データテーブル[SalesDetailData]から担当者コードのユニーク(一意)なリストを作り出すワークフローを作成します。

STEP1

Mainのフローチャートに戻り、[データ加工]をダブルクリックし展開する。

STEP2

[データテーブルをフィルター]アクティビティを追加する(図5)。

STEP3

[フィルターを設定]をクリックする(図5)。

図5:[データテーブルをフィルター]アクティビティ

[フィルターウィザード]画面が表示されます。

STEP4

[入力データテーブル]にデータテーブル[SalesDetailData]を設定する(図6)。

STEP5

[出力データテーブル]の入力ボックスにカーソルをあてた状態でCtrl+Kキーを押し、[変数を設定]に「StaffCDData」と入力し、Enterキーを押す(図6)。

データテーブル[StaffCDData]が作成されます。

STEP6

[出力列]タブを選択し(図6❸)、入力ボックスに「”担当者コード”」と入力する(図6)。

これにより、データテーブル[StaffCDData]にはデータテーブル[SalesDetailData]の担当者コードのみが格納された状態となります。

STEP7

[OK]をクリックする(図6)。

図6:[フィルターウィザード]画面

[フィルターウィザード]画面が閉じられます。

STEP8

[変数]パネルを開き、[StaffCDData]のスコープを[Main]に変更する。

STEP9

[重複行を削除]アクティビティを[データテーブルをフィルター]アクティビティの後に追加する。

※)[重複行を削除]アクティビティは2つ存在します。[アクティビティ]パネルの[使用可能]→[プログラミング]→[データテーブル]の方を選択してください。

表示名を「担当者コード重複行を削除」に変更する。

プロパティ[入力/データテーブル]にデータテーブル[StaffCDData]を設定する。

プロパティ[出力/データテーブル]にもデータテーブル[StaffCDData]を設定する。

[データ加工]のワークフローが完成しました(図7)。

図7:完成した[データ加工]のワークフロー

担当者別Excel書き出し

担当者コードでデータテーブル[SalesDetailData]を絞り込み、絞り込んだデータをExcelファイルに書き込むワークフローを作成します。

STEP1

[Main]フローチャートに戻り、[担当者Excel書き出し]をダブルクリックし展開する。

STEP2

[繰り返し(データテーブルの各行)]アクティビティを追加する。

表示名を「StaffCDData繰り返し(データテーブルの各行)」に変更する(図8❶)。

プロパティ[データテーブル](アクティビティ上では[次のコレクション内の各要素])にデータテーブル[StaffCDData]を設定する(図8❷)。

[繰り返し]を[staffid]に変更する(図8❸)。

図8:[StaffCDData繰り返し(データテーブルの各行)]の設定

STEP3

[StaffCDData繰り返し(データテーブルの各行)]の[本文]に[データテーブルをフィルター]アクティビティを追加する。

[フィルターウィザード]をクリックし、[フィルターウィザード]画面を表示する。

[フィルターウィザード]画面の[入力データテーブル]にデータテーブル[SalesDetailData]を設定する(図9❶)。

[フィルター処理するデータテーブル]にカーソルをあてた状態で[Ctrl]+[K]キーを押し、[変数を設定]に「StaffSalesData」と入力し、[Enter]キーを押す。

データテーブル[StaffSalesData]が作成されます(図9❷)。

[行フィルターモード]に[保持]と[削除]を選択するラジオボタンがあるので[保持]を選択する(図9❸)。

[フィルターウィザード]画面の[フィルター行]タブを選択し、[列]に「”担当者コード”」と入力する(図9❹)。[操作]に「=」を選択し(図9❺)、[値]に「staffid.Item(“担当者コード”)」と入力する(図9❻)。

[OK]をクリックする(図9❼)。

図9:[フィルターウィザード]画面

[フィルターウィザード]画面が閉じます。

これにより、データテーブル[SalesDetailData]が1人の担当者に絞り込まれ、データテーブル[StaffSalesData]に格納されます。

STEP4

[データテーブルをフィルター]アクティビティの後に[Excel アプリケーションスコープ]アクティビティを追加し(図10❶)、プロパティ[ブックのパス]に「“StaffSales_”+ staffid.Item(“担当者コード”).ToString +”.xlsx”」と入力する(図10❷)。

STEP5

[Excel アプリケーションスコープ]アクティビティの[実行]の中に[範囲に書き込み]アクティビティを追加し、プロパティ[データテーブル]にデータテーブル[StaffSalesData]を設定する(図10❸)。

※)[範囲に書き込み]アクティビティは2つあります。[アクティビティ]パネルの[使用可能]→[アプリの連携]→[Excel]の方を選択してください。

図10:[Excelアプリケーションスコープ]アクティビティの設定

こさい
こさい
お疲れ様です!これで完成です。

使用する変数

ワークフロー内で使用する変数は表1の通りです。

表1:使用する変数

名前変数の型スコープ既定値
SalesDetailDataDataTableMain
StaffCDDataDataTableMain
StaffSalesDataDataTable本文

実行してみよう

それでは、ワークフローを実行してください。数秒でワークフローは終了します。

実行すると図11のように、担当者コードが付いたファイルがプロジェクトフォルダーに作成されます。ファイルの中を見ると、担当者別に絞り込まれていることが確認できます。

図11:実行後のExcelファイル

めーたん
めーたん
ファイルを分割する事務作業が無くなるわ!
分割元のデータを取ってくるところや
分割したファイルをメール送信するところ等も
自動化すれば、さらに楽になるね!
こさい
こさい

コメント ログインすると書き込めます