重要な前提:Excelの表とRKの表は別物
RKシリーズでExcelから表を抽出する方法を解説する前に、最も重要な認識の切り分けをしておく必要があります。
RPAを触り始めたばかりのユーザーに多いのですが、Excelファイルの「表」と、RKシリーズで扱う「表型変数」を同じものだと認識している方が少なくありません。これは大きな誤解です。
Excelファイルの表
Excelファイルの表は、あくまでExcelアプリケーション上に存在するデータです。Excelファイルを開いて初めて目に見えるもので、RKシリーズのシナリオが直接アクセスできるものではありません。
RKシリーズの表型変数
一方、RKシリーズの「表型変数」は、RKシリーズ内部で管理される2次元のデータ構造(行と列)を持つ変数です。Excelなど外部ファイルからデータを「抽出」という行為を経て、初めてRKの表型変数として扱うことが可能になります。
関係性を整理すると
| 項目 | Excelファイルの表 | RKシリーズの表型変数 |
|---|---|---|
| 存在する場所 | Excelアプリ内(ファイルに保存) | RKシリーズのメモリ上(変数) |
| RKからの直接アクセス | 不可(抽出が必要) | 可能(繰り返し処理などで直接使用) |
| Excelファイルを閉じても保持 | Excelファイルに保存されていれば可 | シナリオ実行中のみ保持(変数) |
| 他のExcelファイルと連携 | Excelアプリで開いて操作 | 表型変数をExcelに書き込むアクティビティで連携 |
この2つは全くの別物です。今回解説するのは、Excelファイルの表データをRKシリーズの表型変数に「抽出する」方法です。
表抽出方法1:「Excel・CSVファイルから表を抽出」アクティビティ
最初に紹介する方法は、「Excel・CSVファイルから表を抽出」アクティビティを使用する方法です。ファイルパスを指定して、Excelファイルを直接読み込み、表型変数へ変換するアプローチです。
基本的な使い方
- ワークフローに「Excel・CSVファイルから表を抽出」アクティビティを配置する
- アクティビティをダブルクリックし、詳細設定画面を開く
- ファイルパスを入力する(例:C:\データ\受注一覧.xlsx)
- 「読み込み」ボタンを押下する
- Excelファイルのシート、表の範囲、列順、列名などが自動で認識される
- 必要に応じて列名や範囲を調整し、設定を確定する
「読み込み」が重要な理由
このアクティビティは、初期設定でファイルを読み込まないとエラーが発生します。「読み込み」ボタンを押下することで、表の型となるフォーマット(列順、列名、表の位置など)がRKシリーズに記録されます。
シナリオ実行時は、この記録されたフォーマット情報を参照し、同じ構造の表を自動で読み込みます。つまり、設定時に読み込んだフォーマットと、実行時のExcelファイルのフォーマットが一致している必要があります。
この方法の特徴と向いている場面
- ファイルパスだけで自動読み込み:Excelを開かずにバックグラウンドで処理できる
- フォーマット固定:設定時の列順・列名・表の位置を厳密に記録するため、フォーマットが変わらない定期的な処理に向く
- 定型レポートの自動処理:毎月同じフォーマットで出力される帳票やレポートの読み込みに最適
注意点:フォーマットが変わると読み込めなくなる
この方法の最大の注意点は、途中でExcelファイルの列名や列順、表の位置を変更すると、読み込めなくなることです。設定時に記録したフォーマットと異なる表を読み込もうとすると、空の状態で出力されることがあります。
そのため、以下のケースではこの方法が適さない可能性があります。
- 列名や列順が実行のたびに変化するファイル
- 手動で編集され、フォーマットが不定形になる可能性の高いファイル
- 複数のシートに散在するデータを統合したい場合
表抽出方法2:開いているExcelから表を抽出する方法(おすすめ)
2つ目の方法は、Excelファイルを開いた状態から表を抽出する方法です。私が個人的におすすめする方法で、イメージしやすく自由度が高いのが魅力です。
なぜおすすめか
この方法は、以下の点で方法1より優れています。
- 列順の変化に対応できる:最終行を変数で指定するため、列の増減に柔軟に対応
- 列名の変更に強い:範囲指定で読み込むため、列名が変わっても範囲内のデータは取得可能
- 動的な行数に対応:最終行を取得して変数化することで、データ件数が増減しても自動対応
- Excel関数のような直感的な指定:「A1:T9」のような、慣れ親しんだExcelの範囲表記が使える
アクティビティの大きな流れ
この方法では、以下のアクティビティを順に配置します。
- Excelを起動(ファイルを開く)— Excelアプリケーションを起動し、対象ファイルを開く
- シートをアクティブにする— 対象データがあるシートを選択する
- 最終行を取得— データの最終行番号を変数に格納する
- 表を抽出— 範囲を指定して表型変数にデータを読み込む
ポイント:最終行を取得する
この方法の核心は、「最終行を取得」アクティビティを使用して、データの最終行番号を変数に格納する点です。
多くの業務データは、日々追加され行数が変動します。固定の範囲(例えば「A1:T100」)を指定してしまうと、データが101行目に増えた時に読み取り漏れが発生しますし、データが50行しかない時は無駄な空行を読み込んでしまいます。
「最終行を取得」アクティビティを使うことで、実行時点での実際の最終行を自動で検知し、それを変数に格納できます。
変数を使った動的な範囲指定
最終行を「int1」という変数に格納したと仮定します。この変数を使って、表を抽出の範囲設定を以下のように記述します。
| 固定範囲(方法1的) | 動的範囲(方法2) |
|---|---|
| A1:T9 | A1:T{int1} |
「A1:T{int1}」という表現では、{int1}の部分が変数「int1」の値に置き換わります。int1に「9」が入っていれば「A1:T9」、int1に「100」が入っていれば「A1:T100」として実行されます。
これにより、行数が変動しても、毎回正確な範囲でデータを読み込むことができます。
実際のフロー例
以下は、受注データ.xlsxから表を抽出する具体的なフロー例です。
- 「Excelを開く」アクティビティで「C:\データ\受注データ.xlsx」を開く
- 「シートをアクティブにする」で「Sheet1」を選択
- 「最終行を取得」アクティビティで、データ領域の最終行を変数「最終行」に格納
- 「表を抽出」アクティビティで範囲を「A1:E{最終行}」と指定し、表型変数「受注リスト」に格納
このフローでは、受注データが10件でも1000件でも、正確にすべてのデータを「受注リスト」に読み込むことができます。
2つの方法を比較する
どちらの方法を選ぶべきかは、業務の特性とExcelファイルの性質によって変わります。以下の比較表を参考にしてください。
| 比較項目 | 方法1:Excel・CSVファイルから表を抽出 | 方法2:開いたExcelから表を抽出 |
|---|---|---|
| Excelを開く必要 | 不要(バックグラウンド処理) | 必要(画面で開く) |
| 設定の手間 | 初回のみ詳細設定が必要 | フロー内で順次設定 |
| 列順・列名の変化への対応 | 厳密に固定(変わると読み込めない) | 柔軟に対応可能 |
| 行数の変動への対応 | 設定時の範囲に依存 | 最終行変数で自動対応 |
| 処理速度 | 速い(バックグラウンド) | やや遅い(Excel画面操作) |
| 複数シートの処理 | 制限あり | 柔軟に対応可能 |
| 向いている場面 | 定型フォーマットの定期処理 | フォーマットが変動するファイル、行数が増減するデータ |
よくある落とし穴と回避方法
Excelからの表抽出は便利な機能ですが、初心者の方が陥りやすい落とし穴もいくつかあります。
落とし穴1:「Excel・CSVファイルから表を抽出」で読み込み忘れ
アクティビティを配置しただけで、ダブルクリックして詳細設定を開き、「読み込み」ボタンを押していないケースです。この状態で実行すると、フォーマット情報が存在しないためエラーが発生します。
回避方法:アクティビティを配置したら、必ずダブルクリックで詳細設定を開き、「読み込み」ボタンを押してフォーマットを記録しましょう。設定が完了したら、ファイルパスと範囲が正しく表示されているか確認します。
落とし穴2:最終行の取得範囲が誤っている
「最終行を取得」アクティビティは、対象シート内でデータが存在する最終行を検知します。しかし、途中に空行がある場合や、別のデータ領域がシート下部にある場合、意図しない行番号が取得されることがあります。
回避方法:取得した最終行の値が正しいか、事前にExcelファイルで目視確認しましょう。複数のデータブロックがある場合は、目的のデータ領域のみを含む専用シートを用意するか、範囲指定をより精密に行う必要があります。
落とし穴3:範囲指定で列の増減を考慮していない
「A1:T{int1}」のように列を固定して指定している場合、列が追加されてT列を超えると、追加列のデータが読み込まれません。逆に列が減ると、空の列が表型変数に含まれてしまいます。
回避方法:列が頻繁に変動する場合は、表全体を取得する方法を検討しましょう。または、ヘッダー行の列名を事前に確認し、範囲を適切に調整する処理をシナリオ内に組み込むことも有効です。
落とし穴4:Excelファイルが他のプロセスでロックされている
Excelファイルが別のユーザーまたは別のアプリケーションで開かれている場合、書き込み処理や一部の読み込み処理が失敗します。「Excel・CSVファイルから表を抽出」でも、ファイルがロックされていると読み込めないケースがあります。
回避方法:シナリオ実行前に対象Excelファイルが閉じられていることを確認しましょう。共有フォルダ上のファイルを複数人で操作する場合は、処理前にファイルのロック状態をチェックする処理を追加すると安全です。
実践シナリオ例:受注データの自動読み込みと登録
ここまで解説した2つの方法を、実際の業務シナリオにどう組み込むかを一例で紹介します。
業務の背景
営業担当者が毎日作成する「受注一覧.xlsx」を、受注管理システムに自動で転記するシナリオです。ファイル名は固定ですが、受注件数は日によって変動します。また、列順は固定ですが、行数は増減します。
シナリオの流れ(方法2を使用)
- 「Excelを開く」アクティビティで「C:\業務データ\受注一覧.xlsx」を開く
- 「シートをアクティブにする」で「受注データ」シートを選択
- 「最終行を取得」で最終行を変数「最終行」に格納
- 「表を抽出」で範囲「A1:D{最終行}」を表型変数「受注リスト」に格納
- 「繰り返し(表)」で「受注リスト」を順に処理し、受注管理システムに自動登録
- 処理完了後、Excelを閉じる
このシナリオのメリット
上記のシナリオでは、受注データが3件でも300件でも、最終行を自動取得することで正確にすべてのデータを読み込めます。営業担当者が手動で行う転記作業を完全に自動化でき、転記ミスもゼロに抑えられます。
方法1を使う場合、日々行数が変動するため、固定範囲では読み取り漏れや空行の問題が発生する可能性があります。その点、方法2の「最終行を取得」による動的範囲指定は、変動するデータ件数に対して非常に堅牢です。
まとめ
RKシリーズでExcelから表を抽出するには、大きく2つの方法があります。今回解説したポイントを整理すると、以下の通りです。
- 重要な前提:Excelファイルの表とRKシリーズの表型変数は全くの別物。抽出処理を経て初めてRKで扱える
- 方法1「Excel・CSVファイルから表を抽出」:ファイルパス指定でバックグラウンド読み込み。フォーマット固定の定期処理に最適。読み込みボタンでの初期設定が必須
- 方法2「開いたExcelから表を抽出」:Excelを開いてから最終行を取得し、動的な範囲指定で読み込み。フォーマット変化や行数変動に強く、柔軟性が高い
- 最終行の活用:「最終行を取得」アクティビティで変数化し、「A1:T{int1}」のような動的範囲指定が方法2の核心
- 使い分け:定型フォーマット・固定回線なら方法1、変動データ・柔軟性重視なら方法2
Excelからの表抽出は、RPAシナリオで最も頻出する処理の一つです。業務データのExcel管理が多い企業では、この機能の習得が業務自動化の基盤となります。ぜひ今回解説した2つの方法を使い分けて、効率的なシナリオを作成してください。
Excel連携や表抽出の設計でお悩みの場合は、ぜひRKパートナーズまでご相談ください。貴社の業務特性に最適なデータ連携設計を支援させていただきます。
