.png)
今回は、「Excelファイルの最終行にデータを書き込む」という単純なロボットを作成します。元のデータの最終行に文字を書き込む処理をするため、『最初/最後のデータ行を検索』アクティビティの使い方を学びます。
このアクティビティは、よく使うか?と言われれば実際はあまり使わないかもしれません。というのもExcelファイルを操作する際、アプリケーションとしての操作するよりは、大体はデータテーブルとしてデータを取得してから操作してしまうことが多いからです。
前回作成した、設定情報ファイルの読込の部品も使いつつ、製造していきます。
因みに、ExcelVBAで最終行の取得は以下のようなコードになります。これをUiPathで取得するにはどうするかを考えます。
Dim lastRow As Long lastRow = WS.Cells(WS.Rows.Count,"A").End(xlUP).Row
開発環境
- UiPath Studio Community Edition
- Excel 2019
事前準備
- Excelで「設定情報.xlsx」を用意します。
-
Excelで「北海道.xlsx」を用意します。内容は下記の通りです。
- UiPath Studioで「空のプロジェクト」を用意します(プロジェクト名はお好みで)。
-
各ファイルをプロジェクトフォルダの外側に用意します。
製造
-
Main.xamlを開き『フローチャート』アクティビティを配置します。
-
設定情報の読込シーケンスを配置します。設定情報の読込については下記記事を参照してください。ここでは詳細を割愛します。
【UiPath】設定情報ファイルをDictionary型で取り込む | ともゆきの独り言(雑記ブログ)
業務自動化の手法としてExcelVBAだけではなくRPA(UiPath)についても備忘録として残していこうと思っています。実際の業務の処理をRPAで操作する前に、まずはRPA開発のテンプレートとも言える「設定情報ファイルの読み込み」からご紹介したいと思います。
-
フローチャートの中に『シーケンス』アクティビティを配置します。
名前を「Excelの最終行を取得」にします。 -
シーケンスの中に『Excelプロセススコープ』アクティビティを配置します。
「実行」枠は不要なので削除します。 -
Excelプロセススコープの中に『Excelファイルを使用』アクティビティを配置します。
Excelファイル:設定情報のキーを入力します。
変更を保存:チェックを入れてください。
テンプレートファイル:入力データを指定します。
※テンプレートファイルを指定するとExcelファイルを使用の中で扱うアクティビティの情報が持ってきやすくなります。
-
Excelファイルを使用の中に『最初/最後のデータ行を検索』アクティビティを配置します。
ソース:⊕から入力データを指定します。
先頭行をヘッダーとする:にチェックを入れます。
列名:入力データのA列タイトルの「契約日」を入力します。
最初の行の番号を保存:変数を入力します。
※この時、入力ボックスにカーソルを当ててCtrl+Kで新しく変数を作ると、その項目に対応した型の変数が作成できます(この場合、Int32で作成されます)。
最後の行として設定:ここでは「最初の空の行」を指定してください。詳細は後半で説明します。
最後の行の行番号を保存:変数を入力します。
-
Excelファイルを使用中の中に「セルに書き込み」アクティビティを配置します。
以下の情報を入力してください。
書き込む内容:ここの行にデータを入力します。
書き込む場所:Excel.Sheet("北海道").Cell("A" & 最後の行番号)
サンプルMain.xaml

実行結果

最初/最後のデータ行を検索について
このアクティビティの「最後の行として設定」の挙動について説明します。デバッグ用に『1行を書き込み』アクティビティを配置して変数の中身を確認します。
入力されている最後の行
開始行はタイトル行を除いた2行目、最終行は最後のデータがある10行目です。データの件数を調べる時に使います。


最初の空の行
開始行はタイトル行を除いた2行目、最終行は最後のデータの下の空欄の11行目です。入力データに追記するような処理に使います。


入力データがタイトル行のみの場合
タイトル行のみしかない場合どうなるのでしょう?結果はデータ行が存在しないため最初の行の行番号はマイナス値が返されます。最後の行の行番号は選択肢によって違います。なので、データを追記するような場合は、行番号の取得に一工夫必要になります。単純に+1を追加すると次回以降も加算されてしまうので、データ行の有無で分岐が必要になりそうですね。

入力されている最後の行

最初の空の行

以上。
コメントを投稿
別ページに移動します