UiPath

【UiPath】Excelの読み込み、書き込みの操作

UiPath Studioの開発では、Excelの操作を行うことが多いです。

しかし、Excelの操作アクティビティは多く、またクリックやキーボードでもExcelを操作できるので、どの方法を使えばよいか迷うケースがあります。

この記事では、おすすめのExcel操作方法、Excelアクティビティ一覧、よく使用するExcelの読み込み、書き込みなどのアクティビティについて、解説します。

おすすめのExcel操作方法

Excelの操作方法は、Excel用のアクティビティを使用するか、Excelファイルを開いてクリックやキーボードを使用するパターンがあります。

また、Excel用のアクティビティは、Excelのインストールが必要なアクティビティと不要なアクティビティが存在します。

表形式にまとめると以下の通りです。

No Excel操作方法 Excelのインストール 操作できることの多さ プロセス実行時の安定性
1 アプリの連携>Excel 配下のアクティビティを使用 必要 安定
2 システム>ファイル>ワークブック のアクティビティを使用 不要 安定
3 Excelを開いて、クリックやキーボードのアクティビティを使用 必要 不安定

 

No1の「アプリの連携>Excel 配下のアクティビティを使用」が、プロセス実行時の安定性があり、操作できることもそこそこ多いので、おすすめです。

No2の「システム>ファイル>ワークブック のアクティビティを使用」は、操作できることが少ないため、Excelをインストール出来ないなどの事情がある時のみ使用すると良いです。

No3の「Excelを開いて、クリックやキーボードのアクティビティを使用」は、Excelをクリックやキーボードのアクティビティを使用して操作するため、操作できることは多いけど、プロセス実行時の安定性に欠けるので、なるべく使用しない方が良いです。

ラッコくん
ラッコくん
この記事では、No1の「アプリの連携>Excel 配下のアクティビティを使用」を解説するよ。

 

Excel操作のアクティビティ一覧

Excelを操作できる 「アプリの連携>Excel」 配下のアクティビティ名と出来ることは、以下表の通りです。

アクティビティの場所 アクティビティ名 アクティビティで出来ること
アプリの連携>Excel>テーブル 表をフィルター
(Filter Table)
スプレッドシートの表を、列の既存の値に基づいてフィルター処理します。
表を並べ替え
(Sort Table)
列の値に基づいてスプレッドシートの表を並べ替えます。
表を作成
(Create Table)
指定された範囲から表を作成します。
表の範囲を取得
(Get Table Range)
指定したスプレッドシートから Excel の表の範囲を抽出します。
ピボット テーブルを作成 (Create Pivot Table) 指定された範囲から表を作成します。
ピボット テーブルを更新 (Refresh Pivot Table) 指定されたピボット テーブルを更新します。
列を削除
(Delete Column)
表の列をその名前に基づいてスプレッドシートから削除します。
列を挿入 (Insert Column) 新しい列を表に挿入します。
アプリの連携>Excel>処理 Excel アプリケーション スコープ
(Excel Application Scope)
Excelブックを開き、Excelアクティビティのスコープを提供します。このアクティビティの実行が終了すると、指定したブックとExcelアプリケーションが閉じます。
シートをコピー (Copy Sheet) 指定されたワークブックからシートをコピーして、指定されたワークブックに貼り付けます。
セルに書き込み
(Write Cell)
指定されたスプレッドシートのセルまたは範囲に値または数式を書き込みます。
セルの数式を読み込み (Read Cell Formula) 指定した Excel セルで使用されている数式を抽出します。
セルの色を取得 (Get Cell Color) セルの背景色を抽出して Color 変数として保存します。
セルを読み込み (Read Cell) Excel セルの値を読み取って変数に格納します。
ブックのシートを取得 (Get Workbook Sheet) インデックスに基づいてシートを検索し、取得した名前を String 変数として返します。
ブックの全シートを取得 (Get Workbook Sheets) ワークブックの全シートの名前をインデックス順の一覧として返します。
ブックを保存 (Save Workbook) [Excel アプリケーション スコープ アクティビティ] の [ブックのパス] プロパティで指定されているブックに変更を保存します。
ブックを閉じる (Close Workbook) 開いている Excel ワークブックを閉じます。
列を読み込み (Read Column) [開始セル] プロパティ フィールドで指定したセルで開始する列の値を読み取り、IEnumerable<Object> 変数に格納します。
範囲に書き込み (Write Range) DataTable 変数のデータを、[開始セル] フィールドで指定したセルを開始点としてスプレッドシートに書き込みます。
範囲の色を設定 (Set Range Color) Color変数を使用して、指定したセルまたはセル範囲の色を変更します。
範囲を削除 (Delete Range) Excel ワークブックの指定された範囲を削除します。
範囲を読み込み (Read Range) Excel の範囲の値を読み取り、DataTable 変数に格納します。
範囲を追加 (Append Range) DataTable変数に格納されている情報を、指定されたExcelスプレッドシートの最後に追加します。
範囲を選択 (Select Range) さらにアクションを実行する目的で、Excel スプレッドシートの指定した範囲を選択します。
行を読み込み (Read Row) [開始セル] プロパティ フィールドで指定したセルで開始する行の値を読み取り、IEnumerable<object> 変数に格納します。
選択範囲を取得 (Get Selected Range) 選択された範囲をString 変数として返します。

 

必ず使用するアクティビティ

「アプリの連携>Excel」 配下のアクティビティを使用する場合は、「Excel アプリケーション スコープ」内にアクティビティを配置します

従って、「Excel アプリケーション スコープ」を必ず使用します。

サンプルプロセス

ペンギンさん
ペンギンさん
「システム>ファイル>ワークブック」のアクティビティを使用する場合、Excel アプリケーション スコープは不要です。

 

Excel アプリケーション スコープの設定項目

設定場所 設定項目 設定内容
アクティビティの本体
ブックパス 使用するExcelスプレッドシートのフルパス。
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
ファイル パスワード 必要に応じて、パスワードで保護されたExcelブックを開くために必要なパスワード。
ブックパス 使用するExcelスプレッドシートのフルパス。
編集用パスワード 必要に応じて、パスワードで保護されたExcelブックを編集するために必要なパスワード。
オプション インスタンスのキャッシュ時間 すべての子アクティビティが実行された後、Excelプロセスを存続させる期間。
マクロを設定 現在のExcelファイルのマクロレベルを指定します。
可視 選択すると、Excelファイルは、アクションの実行中にフォアグラウンドで開かれます。
変更を保存 アクティビティによって発生した変更ごとにワークブックを自動的に保存します。
存在しない場所ファイルを作成 選択すると、指定したパスにブックが見つからない場合、[ブックパス]プロパティフィールドで指定した名前で新しいExcelブックが作成されます。
読み取り専用 指定したブックを読み取り専用モードで開きます。
出力 ブック WorkbookApplication変数に格納されているExcelスプレッドシートのすべての情報。
既存のブック 以前にWorkbookApplication変数に保存されたExcelファイルのデータを使用します。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

 

よく使うアクティビティ

シートをコピー (Copy Sheet)

エクセルのシートのコピーは、「シートをコピー (Copy Sheet)」を使用します。

シートをコピーの設定項目

設定場所 設定項目 設定内容
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
宛先 コピー先のファイル パス シートのコピー先となるワークブックです。
コピー先のシート名 貼り付け先のシートに使用する名前です。
入力 シート名 コピー元となるシートの名前です。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

 

サンプルプロセス
指定のシートをコピーして別シートを作成する。

・シートをコピーのプロパティ

・対象のエクセルファイル

・実行後のエクセルファイル

ラッコくん
ラッコくん
実行後、「シートをコピー」プロパティの「シート名」で指定したシートが、「コピー先のシート名」で指定した名前で複製されているよ。
ペンギンさん
ペンギンさん
「シートをコピー」プロパティの「コピー先のファイルパス」を指定しない場合、同一ファイルにシートが複製されます。

 

セルに書き込み (Write Cell)

エクセルのセルへの書き込みは、「セルに書き込み (Write Cell)」を使用します。

セルに書き込みの設定項目

設定場所 設定項目 設定内容
アクティビティの本体
シート名 書き込むセルまたはセルの範囲を示すシートの名前です。
範囲 書き込み先の Excel のセルまたは範囲です。
セルまた範囲に書き込む値または数式です。
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
宛先 範囲 書き込み先の Excel のセルまたは範囲です。
シート名 書き込むセルまたはセルの範囲を示すシートの名前です。
入力 セルまた範囲に書き込む値または数式です。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

 

サンプルプロセス
エクセルファイルを読み込み、指定のセルへ書き込む

・対象のエクセルファイル

・プロセス実行後のエクセルファイル

 

セルを読み込み (Read Cell)

エクセルのセルの読み込みは、「セルを読み込み (Read Cell)」を使用します。

セルに書き込みの設定項目

設定場所 設定項目 設定内容
アクティビティの本体
シート名 読み取るセルのあるシートの名前です。
セル 読み取るセルです。
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
入力 シート名 読み取るセルのあるシートの名前です。
セル 読み取るセルです。
出力 結果 指定したスプレッドシートセルからの情報を変数に格納します。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

 

サンプルプロセス
エクセルファイルを読み込み、指定セルを読み取る。

・「A1セルを読み込み」のプロパティ

・「B2セルを読み込み」のプロパティ

・対象のエクセルファイル

・プロセス実行結果

範囲に書き込み (Write Range)

エクセルの範囲に書き込むのは、「範囲に書き込み (Write Range)」を使用します。

範囲に書き込みの設定項目

設定場所 設定項目 設定内容
アクティビティの本体
シート名 書き込む範囲を含むシートの名前です。
開始セル データの書き込みを開始するセルです。
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
宛先 シート名 書き込む範囲を含むシートの名前です。
開始セル データの書き込みを開始するセルです。
オプション ヘッダーを追加 オンの場合は、指定した範囲に列見出しも書き込まれます。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

 

サンプルプロセス
CSVファイルから読み込んだデータテーブルを、エクセルファイルへ範囲で書き込む。

・「範囲に書き込み」のプロパティ

・読み込み対象のCSVファイル

・読み込み対象のエクセルファイル

・プロセス実行後のエクセルファイル

 

範囲を読み込み (Read Range)

エクセルの範囲で読み込むのは、「範囲を読み込み (Read Range)」を使用します。

範囲を読み込みの設定項目

設定場所 設定項目 設定内容
アクティビティの本体
シート名 読み取る範囲のあるシートの名前です。
範囲 読み取る範囲です。
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
入力 シート名 読み取る範囲のあるシートの名前です。
範囲 読み取る範囲です。
オプション ヘッダーの追加 オンの場合は、指定した範囲に列見出しも書き込まれます。
表示形式を維持 このチェック ボックスをオンにすると、読み込む範囲の書式が維持されます。
フィルターの使用 オンの場合は、アクティビティは指定された範囲から除外されたものを読み取りません。
出力 データテーブル 指定した Excel の範囲から抽出したデータを DataTable 変数に格納します。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

 

サンプルプロセス
エクセルファイルの範囲ごと読み込んだデータテーブルを、1行ずつログ出力する。

・「範囲を読み込み」のプロパティ

・読み込み対象エクセルファイル

・プロセス実行結果

「繰り返し(各行)」の使い方は、以下を記事を参考にしてください。

https://penrako.com/uiparhloop/#rtoc-4

https://penrako.com/uiparhloop/#rtoc-4(別ウインドウ)

 

範囲を追加 (Append Range)

Excelファイルの最終行の次に範囲で追記するのは、「範囲を追加 (Append Range)」を使用します。

範囲を追加の設定項目

設定場所 設定項目 設定内容
アクティビティの本体
シート名 指定された範囲を追加するシートの名前。
データテーブル 追加するデータ。
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
入力 シート名 指定された範囲を追加するシートの名前。
データテーブル 追加するデータ。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

サンプルプロセス
エクセルファイルの範囲ごと読み込んだデータテーブルを、既存のエクセルファイルの最後に追記する。

・「範囲を追加」のプロパティ

・読み込み対象のエクセルファイル

・読み込み対象のCSVファイル

・プロセス実行後のエクセルファイル

 

まとめ

  • Excelの操作は、「アプリの連携>Excel」配下のアクティビティを使用するのがおすすめ
  • アプリの連携>Excel」 配下のアクティビティを使用する場合は、「Excel アプリケーション スコープ」内にアクティビティを配置します。
  • 使用頻度の高いアクティビティは、シートをコピー 、セルに書き込み 、セルを読み込み 、範囲に書き込み 、範囲を読み込み、範囲を追加

 

最後に関連記事を紹介します。

↓データテーブルの読み込み、出力、検索、書き込み、削除方法について、解説した記事です。

【UiPath】データテーブルの読み込み、出力、検索、書き込み、削除UiPath Studioの開発では、データテーブルの操作を行うことが多いです。 しかし、データテーブルの操作は直観的に分かりづら...

https://penrako.com/uipathdatatable/(別ウインドウ)

 

↓繰り返し処理を行うアクティビティの適切な使い方について、説明した記事です。

https://penrako.com/uiparhloop/

https://penrako.com/uiparhloop/(別ウインドウ)

 

↓UiPath Studioのアクティビティの使い方、開発時のチップスについては、以下記事にまとめています。

【UiPath】プロセス作成方法やアクティビティの使い方のまとめ記事UiPath Studioでのプロセス作成方法やアクティビティの使い方を体系的に学びたい方向けに、UiPath Studioのプロセス作成方法、アクティビティの使い方、開発時のチップスを分かりやすく説明します。...

https://penrako.com/uipathstudiosummary/(別ウインドウ)