こんにちは。
プロセス&アプリケーション推進部(PAP)のいっこです。
RPA初心者だった私が、ついにUiPathを使ってExcelファイル操作の自動化業務に携わることになりました。UiPathについてはアカデミー(※)で概要を学びましたが、実際にモダンアクティビティを使って自動化を進める中で、思い通りに動かず苦労する場面も多々ありました。そこでUiPathが公開してくれているUiPath Documentation Portalを見ましたが、それだけでは十分に実現したいことができませんでした。
(※)こちらの内容を一通り実施しております。
本記事では、業務を通じて得たアクティビティの設定方法や工夫について共有したいと思います。
本ページにて紹介するUiPathのバージョンは2026.0.180 STS 、アクティビティパッケージのバージョンはExcel Activities3.3.1となります。
目次
1. 最初に気を付けること
2. フィルター
3. 最初/最後のデータ行を検索
4. さいごに
1. 最初に気を付けること
具体的なアクティビティの設定方法に入る前に、まず注意すべき点があります。それは、Excelのシートやセルの保護状態です。
編集権限を制限することで、他のユーザーが不用意にデータを変更できなくなる便利な機能ですが、保護された状態のExcelに、UiPathでフィルターやコピー&ペーストを行おうとするとエラーが発生します。
例えば、保護された箇所にフィルターをかけようとすると、UiPathで操作できず、列が空のエラーメッセージが表示されます。
最初はこの挙動に戸惑いましたが、事前にシート保護を解除するか、UiPathで保護解除を行うことで回避できます。
2. フィルター
データ抽出に欠かせないフィルターアクティビティの設定について説明します。
ソース:対象ファイル、対象シート、(必要に応じてレンジ)を設定
列名:フィルター処理を行う列名を指定
フィルターを設定:フィルター内容を設定
既存のフィルターをクリア:チェックありで既存のフィルター処理をクリアする
フィルター処理の対象が以下のように1行目がヘッダーのデータの場合についてです。
この場合は、列名フィールド横の+ボタンを押下することで、列見出しが一覧表示されます。その表示された見出しを選択することで、その列をフィルター対象に設定できます。
では、以下のように 表の上側の情報が記載された行が存在しデータがA1セルから存在しない場合はどうでしょうか。
先ほどと同じようにソースでシートを選択して列名フィールド横の+を押下しても列名は取得できません。
UiPath Documentation Portalのフィルターの説明ページでは以下のように記載されております。
元の範囲:~範囲、表、またはシートを手動で入力するには、[カスタム入力] を選択します。
列名:~フィルター処理する列見出しを選択します。または、[テキスト] を選択してテキスト ビルダーに列見出しの値を入力するか、[詳細エディターを開く] を選択して VB の式を入力できます。
https://docs.uipath.com/ja/activities/other/latest/productivity/filter-x
ソース欄ではレンジを設定し、列名ではセルを設定することでフィルター処理を行うことで実現ができました。
以下赤枠をフィルター処理したい場合、Range(“A3:D3”)と設定します。
また、フィルター処理については、2点注意事項があります。
- 表のヘッダーについて
今回の例の場合、ヘッダーにはNo、大項目、中項目、金額が設定されています。しかし空欄の場合はフィルターをかけることができません。
UiPathで動作させるときには一時的に文字列を設定する等の対応が必要となります。
- 複数列にフィルターについて
以下のようにソースにヘッダー行だけでなく、データ行まで含めてレンジ指定すれば複数列に対してフィルター処理を行うことができます。
3. 最初/最後のデータ行を検索
データの範囲選択時などに役立つ、”最初/最後のデータ行を検索”機能です。
複数列に対してフィルター処理するときにデータ行まで含めてソースに設定すると説明しましたが、データ数が可変の場合固定値で設定することができません。
しかし、本アクティビティを利用すればデータ数が変わっても利用することができるようになります。
ソース:対象ファイル、対象シート、(必要に応じてレンジ)を設定
先頭行をヘッダーとする:チェックを入れると先頭行をヘッダーとして扱う
表示行のみ:チェックありで表示行のみ検索対象とする(フィルターなどで非表示にされている行は検索対象とならない)
列名:行取得処理を行う列名を指定
最初の行の番号を保存:該当アクティビティの処理で取得した最初の行番号を格納する変数名を設定
最後の行として設定:入力されている最後の行 or 最初の空の行 どちらかを選択
最後の行の番号を保存:該当アクティビティの処理で取得した最後の行番号を格納する変数名を設定
行数取得する対象が以下のように1行目がヘッダーのデータの場合についてです。
フィールド横の+ボタンを押下することで簡単に設定することができます。
実行するとlastRowIndexの変数には15が設定されます。
では、フィルターのときと同じように表の上側の情報が記載された行が存在しデータがA1セルから存在しない場合はどうでしょうか。
フィルターアクティビティと同じようにソースでシートを設定後、列名フィールド横の+を押下しても列名は取得できません。
UiPath Documentation Portalの最初/最後のデータ行を検索の説明ページでは以下のように記載されております。
ソース:~データを含む最初と最後の行を検索するシート、表、または範囲を選択します。~または、[カスタム入力] を選択して範囲を手動で入力するか、[詳細エディターを開く] を選択して VB の式を入力します。
列名:~データを検索する列を選択します。~選択内容に応じて、選択範囲の先頭行の値または列名によって列が識別されます。
https://docs.uipath.com/ja/activities/other/latest/productivity/find-first-last-data-row-x
こちらも、ソース欄ではレンジを設定し、列名ではセルを設定することでデータ行数取得を行うことで実現ができます。
このとき、ソースに設定するレンジはヘッダー全体ではなく、行数取得する列のみ指定します。
(今回の場合、ヘッダーはA3セルからD3セルですが、B列で検索するため、B3セルを設定します)
1列指定ではなくヘッダー全体をソースに設定してしまうと、正しくデータ行数を取得できなくなってしまいます。
実行するとlastRowIndexの変数には17が設定されます。
4. さいごに
本記事では、UiPathを活用したExcelファイル操作の実践的なポイントや、細かな設定方法についてご紹介しました。RPA初心者の視点から、実際に業務でつまずいた点や工夫した点を記載しましたので、同じように悩んでいる方の参考になれば幸いです。


