【UiPath】Excelアクティビティとワークブックアクティビティの違い+データテーブル

# 2系統あるUiPathのExcel系アクティビティ
UiPathでは、Excelファイルの操作に「Excel」系のアクティビティと「ワークブック」系の2種類あるのをご存じですか？目につく方は「Excel」系のアクティビティで、これは**App Integration** (UIではアプリの連携、ヘルプではアプリケーションとの連携、と訳されている)に分類されています。**35個のアクティビティ** (うち8個がテーブル関係、8個が処理関係)が登録されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/8d80ed54-3fdb-b89f-466d-3116e3b9841b.png)

一方、**System** (システム)系のアクティビティの中にも、同じようにExcelワークブックを読み書きできる「ワークブック」系アクティビティが存在します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/2e92d3bf-a032-8200-8510-8b78ed9ba362.png)

これらは何が違うか、一見わからないところがありますね。

それぞれのパッケージについて、公式ドキュメントがありますので、使い方を整理してみることにしましょう。実は両方とも[UiPath.Excel.Activities](https://docs.uipath.com/activities/lang-ja/docs/about-the-excel-activities-pack)パッケージに含まれています。

* [App Integration](https://docs.uipath.com/activities/lang-ja/docs/app-integration-excel) (Excel系アクティビティ)
* [System](https://docs.uipath.com/activities/lang-ja/docs/system-excel) (ワークブック系アクティビティ)

# Excel アクティビティとワークブックアクティビティの比較

『[About the Excel Activities Pack](https://docs.uipath.com/activities/lang-ja/docs/about-the-excel-activities-pack)』を見てみると、以下のように書いてあります。

>Microsoft Excel が PC にインストールされていない場合でも、「システム」の中で分類されたアクティビティを実行することができますが、「アプリケーションとの連携」の中のアクティビティは、アクティビティを実行する PC にアプリケーションが必要です。

つまり、Excel系アクティビティはデバイスにインストールされているExcelと連携して作業が自動化され、ワークブック系アクティビティはUiPathのロボットだけでExcelがなくても作業を自動化できてしまうんです。これはとてもうれしいですね！なぜなら、実行するデバイスが多い場合 (特にRPA専用マシン=Unattended、の場合)に、**デバイスの数だけOfficeのライセンスを買い足さなくてもよい**からです。デバイスの数が10、50と増えたときにだいぶコスト感が違います。

加えて、最近はExcelをOffice 365ライセンスの中で導入するケースが増えていると思いますが、その場合、Unattendedだとライセンスが問題になります。Office 365はユーザーライセンスのため、ユーザーがログインしている間に使うAttendedのシナリオはOKですが、ロボット専用マシンを作って使うことは想定していません。(マイクロソフトにUnattendedでの使い方を問い合わせるとグレーゾーンだと回答が来ます) したがって、**Unattendedで使うには旧来のオンプレミスOfficeのデバイスライセンスを使う必要があります**。

# Excel アクティビティの特徴
Excel系アクティビティは、やはり何といっても様々な操作を安定的に自動化できることが特徴でしょう。Officeのライセンスに問題がないのであれば、やはりこれを使うのが無難でしょう。

Excel系アクティビティを使うには、「**Excelアプリケーションスコープ**」というコンテナーアクティビティを使い、他のアクティビティは必ずこれの中に配置するようにします。Excelアプリケーションスコープでは、開くExcelファイル (.xlsx、.xls、.xlsm)を指定して、スコープ中はずっとこのファイルを操作します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/d028fde7-bf06-86c2-4780-83f18c04dfc3.png)

また、公式ドキュメントには以下の記載があります。大きなExcelファイルを扱うときは、やはりオフィシャルなアプリケーションを使ったほうが確実なようです。
>多数の行と列をまたがる大規模なスプレッドシートの場合は、「 アプリケーションとの連携 」の中で分類されたアクティビティを使用することをお勧めします。

# ワークブックアクティビティの特徴
ワークブック系のアクティビティは、それぞれのアクティビティ毎にExcelファイル名を指定する仕組みになっており、アクティビティ毎にファイルの開閉を行うことになります。Officeアプリケーションがインストールされていなくても、基本的なファイル操作は一通り行うことが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/4e8f7efe-c322-c771-67d1-6f2345242080.png)

# データテーブル アクティビティもあるよ
UiPathには「データテーブル (DataTable)」系のアクティビティも用意されています。.NET Frameworkと互換性がある仕組みを利用しているUiPathでは、.NET Frameworkで使える [DataTableクラス](https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable?view=netframework-4.8) (`System.Data.DataTable`)をRPA内で利用できます 。DataTableクラスは、ざっくり言うと2次元配列の変数です。この変数に対していろいろな操作を行うためのアクションが提供されています。Excelファイルとも連携できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/53e609af-070f-7a0d-1b07-23ba1d7c85c1.png)

# 最後に
いかがでしたでしょうか。UiPathでいろいろな方法でExcelファイルを扱えるので、試してみてください。