【UiPath】モダンデザイン（Excelモダン編）

# はじめに

この投稿は、RPAツール「UiPath」の モダンデザイン 機能 について「個人的に」まとめたものです。量が多いので、数回に分けて書きます。今回は「Excelモダン（ExcelBusiness）」について。

前回までの記事はこちら

https://qiita.com/miya_gis/items/b0a25ef2621f10fbdbcc

https://qiita.com/miya_gis/items/855c99aa3ccd6663c951

https://qiita.com/miya_gis/items/d5ade049072ad39229de

https://qiita.com/miya_gis/items/b9903d5145098a918e17

# 前提

Excelモダン（ExcelBusiness）を使用するには、以下の前提条件が必要です。

```bat
- 1）UiPath Studio のバージョンが「21.10」以降である
- 2）UiPath.Excel.Activities パッケージがバージョン「2.11.0」以降である
- 3）プロジェクト設定で「モダンデザインエクスペリエンス」が有効である
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/141ca5d6-2918-adbb-5e8f-e516c8a08f40.png)
※ この記事は「UiPath Studio 2021.12.0 - Community License」で画面・動作確認しています

# Excelモダン とは

Excelモダン は Version 2021.10 で登場した「Excel関連の新しいアクティビティ」です。

元々は「**StudioX**」用に作成された「UiPath.Excel.Activities.Business.XXX」が、Studioに移植されました。StudioX風のデザインで、`アクティビティの画面上で「かんたんに操作できる」デザイン`になっているのが特徴です。

アクティビティパネル で 実際のアクティビティを見てみると、以下のようになっています。

|  | アクティビティパネル |
|:-:|:-:|
| モダン無効<br>または<br>クラシック  | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/da738cb0-3901-db6a-8ae6-1509b9223f71.png) |
| モダン有効  |  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/ec6f1267-b3f2-76f0-bb7e-f09d8665c550.png) |

分かりやすくするために、それぞれのアクティビティを対比して表にすると、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/d0627d05-0318-f874-ece3-853600dba847.png)

https://miyag.github.io/UiPath.ReusableCode/excelmodern.html

# Excelモダン の特徴

上記の表を見ると、アクティビティが増えているのが分かります。元々「**35**」あったアクティビティは「**47**」に増えました。

基本的には「複数のアクティビティが集約」されて、減っているのですが、一方で「シート系・グラフ系」のアクティビティなとが増えています。
また「VBAを呼び出し」や「セルの色を取得」などが、モダンに移植されていません。（クラシックアクティビティを有効にすれば表示されます）

使ってみると分かりますが、`アクティビティ自体は「StudioX」そのもの` で「アプリケーションカード」的な使い方や、Uiなど、まさしく「StudioX」です。

以下で、いくつか特徴を説明します。

``` bat
# 1）プラスメニュー
# 2）Excelプロセススコープ
# 3）シート系／グラフ系 アクティビティ の強化
# 4）保存／出力系 アクティビティ の強化
# 5）ちょっとした編集機能の強化
# 6）プロジェクト設定
```

# 1）プラスメニュー

Excelモダンのアクティビティの特徴として、見た目でも分かりやすいのが`「プラスメニュー（プラスサイン／プラスボタン）」`です。アクティビティの設定の便利機能で、「プラス」ボタンを押すと、それぞれのプロパティで期待される型に一致するデータを参照して選択できたりします。

例えば、Excelブックのデータを取得する際に「シート名」が必要ですが、プラスボタンを押すと、ブック内のシートを読み込み、メニュー選択できます。

![uianime22.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/eb22fb1c-57ca-f4bf-0384-bf5b5a91f756.gif)

ネストしたExcel操作の場合、どのExcelを操作するかを「ブック名」を指定できたり「Excel内で示す」を選択すると、Excelアドインが表示され、実際の画面で範囲指定も出来ます。

![uianime23.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/80e34a1e-50cf-6399-d462-68b2c20bde78.gif)
このプラスメニューは、Excelだけでなく、PowerPoint、Outlook、GmailGoogle スプレッドシートなどのアクティビティでも使用できます。

プラスメニューを使っていると、以下のような「謎の項目」を見ることがありますが、エクセル内部で持っているデータのことで、基本的には使用しません（リストに出てしまっているだけ）

```
_xlmn_Print_Area：印刷範囲（印刷範囲が設定時に表示される）
_xlmn_Print_Titles：印刷タイトル（印刷タイトルが設定設定時に表示される）
_FilterDatabase：オートフィルター適用後のデータ（オートフィルター設定時に表示される）
```


# 2）Excelプロセススコープ

Excelモダンには以前にあった「**Excelアプリケーションスコープ**」が無くなり、代わりに「`エクセルプロセススコープ`」が追加されました。

何が変わったか？と言うと「`処理のプロセス`」平たく言えば「ウィンドウの開き方」についての指定が細かく指定できるようになりました。この指定は、プロジェクト設定画面でも指定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/7cdaebc8-a87f-27ad-7cb7-5e1c88cd6ea8.png)

ちなみに「単一の Excel プロセス スコープ」というアクティビティもあります。
その名の通り「プロセスを一つにしたいとき」に使用しますが、

```
- 同じプロセスにして、Excelのメモリ消費量が増加を防ぎたい
- 別プロセスだと、コピー＆ペースト動作が変わるのを防ぎたい（別プロセスは、基本は値コピー）
```

時などに使用できそうです。メモリ使用量、コピペでうまく行かない場合は「単一の Excel プロセス スコープ」を使ってみると良さそうです。


# 3）シート系／グラフ系 アクティビティ の強化

シート系のアクティビティが「**3**」から「**7**」に増えました。

シート名を取得系アクティビティは「`繰り返し(Excelの各シート) For Each Excel Sheet`」に集約され、シートの「挿入・削除・保護・保護解除・名称変更」などが追加されています。今までこの手の操作は「VBA」や「VB.NET」「画面操作」で解決していましたが、標準アクティビティで出来るようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/b0c2cb50-79a5-7a33-f71b-fae626a7030a.png)

グラフ系アクティビティも「**3**」つ増えました。

グラフ取得は「クリップボードにコピー／画像として保存」のいずれかの操作、挿入は「データソース・グラフ種類・プロパティを指定してグラフ作成」、更新は「既存グラフのデータ範囲更新、データラベルの更新」などが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/fa8584d0-87af-38f1-2109-be9ead42f142.png)


# 4）保存／出力系 アクティビティ の強化

保存・出力系のアクティビティが「**1**」から「**4**」に増えました。
「PDFとして保存」など、よくある操作が標準アクティビティで出来るようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/bc3eee79-0ce7-0f20-6080-244032606735.png)


# 5）その他機能の強化

上記の他にも便利なアクティビティが提供されているので、紹介します。

## 5.1）最初/最後のデータ行を検索（Find First/Last Data Row）

その名前の通り、最初の行番号・最後の行番号を取得できます。
A１セルからキレイに始まらない表データで、最終行番号を取得して範囲指定で読み取りたい時などに使用できます。

| アクティビティ画面 | 使用データイメージ |
|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/f7f62319-3be7-1a56-a6ea-a85dfad7c96b.png)   | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/26498d2d-aea7-0237-b1fc-dcc836638609.png)  |

https://docs.uipath.com/activities/lang-ja/docs/find-first-last-data-row-x

## 5.2）VLOOKUP

ExcelのVLOOKUP機能と同じく、範囲を指定して値を検索し、右側の値を取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/a1d51f6f-42f4-9144-05e1-022283500444.png)

https://docs.uipath.com/activities/lang-ja/docs/v-lookup-x

## 5.3）テキストを列に分割（Text to Columns）

Excelの「区切り文字で列を分割」する機能のアクティビティ版です。
区切り後の貼り付け先は「同一シート内」でないとエラーになるので注意が必要です。

| アクティビティ画面 | Excelの機能イメージ |
|:-:|:-:|
| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/d53cb201-6638-ff42-4124-4eee108377f8.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/c06c9768-dbdf-68c5-f65e-2b0e09cd07b7.png)  |

https://docs.uipath.com/activities/lang-ja/docs/text-to-columns-x

## 5.4）範囲をコピー/貼り付け（Copy/Paste Range）

Excel上のコピー＆ペーストのアクティビティ版です。
ソース（コピー元範囲）とターゲット（コピー先の範囲）コピー内容を指定し、貼り付けします。

| アクティビティ画面 | Excelの機能イメージ |
|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/23a2e5f4-1592-6336-13c8-0ac5b0bf7de6.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/2ba8e8bf-2cf3-cd03-1d5c-bed23dde36d1.png)|

コピーする内容で、選択できる内容は以下のとおりです。

```
All：すべて
Values：値
Formulas：数式
Formats：書式
```

https://docs.uipath.com/activities/lang-ja/docs/copy-paste-range-x

## 5.5）値を検索/置換（Find/Replace Value）

Excel上の検索／置換のアクティビティ版です。
操作は「検索／置換／すべて置換」の3種類から選べます。


|操作| アクティビティ画面 | Excelの機能イメージ |
|:-:|:-:|:-:|
|検索|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/c570f4da-d819-cc7e-3635-0d5e37f6ad54.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/8430797d-cc41-8add-47f4-af86bcee58de.png)|
|置換|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/2ddaccd8-8bb2-4ca5-7127-a51e88e6036b.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/5f728b10-757f-905e-96c5-90e3ba2c80d5.png)|
|すべて置換|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/5b665866-b3ce-090e-fbd9-819e7ee5492c.png)|同上|



https://docs.uipath.com/activities/lang-ja/docs/find-replace-value-x

# 6）プロジェクト設定

Excelプロセススコープの紹介でも触れましたが、Excelモダンでは「プロジェクト単位での動作設定」が出来るようになっています。`アクティビティ側で設定されていない場合は、プロジェクト側の設定で動作する`仕組みです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/1d44927e-3ca0-5b3e-5b0a-903310b4aa03.png)

設定できる内容は以下の通りです。

| 項目名 | 設定可能な値 |
|:-|:-|
| Excel デザイン<br>エクスペリエンス | **UseGlobal**：プロジェクト設定 -> モダンデザインエクスペリエンスの設定に合わせる<br>**UseClassic**：プラスメニューでモダンのサジェストを非表示<br>**UseModern**：プラスメニューでクラシックのサジェストを非表示  |
| Excel 起動方法 | **オートメーション（自動化）**：APIでExcelを起動。起動は高速、アドインが読み込みされないことも。<br> **アプリケーション**：ユーザーが手動で開いたときのように起動し、Excel の読み込み動作があらゆる面で (アドインなど) 保証される  |
| Excel の開始までに<br>待機する時間（秒）  | 秒数  |
| Excel ウィンドウを表示 |**True**：表示する<br>**False**：表示しない |
| Excel のアラートを表示 |**True**：表示する<br>**False**：表示しない |
| Excel プロセスモード |**常に新規作成**：常に新しい Excel プロセスを作成<br>**有人オートメーション ユーザー**：Excelプロセスを1つにする。複数プロセス検出時は確認メッセージ表示<br>**存在する場合は再利用**|
| 既存のプロセスに<br>対するアクション | **なし**<br>**強制終了**|
| ファイルの競合の解決方法 |**なし**<br>**保存せずに閉じる**<br>**ユーザーに確認**：ファイルを閉じるよう求めるメッセージを表示<br> **例外をスロー**|
|マクロの設定 | **すべて有効化**：<br>**すべて無効化**<br>**Excelの設定を使用**|
|読み取る値の書式 | **規定**<br>**未処理の値**：書式設定を無視して値を取得<br>**表示値**：Excelで表示されている通りに値を取得 |
|Excel プレビューの種類<br>＋メニュー使用時 | **規定**：使用プレビュー種類をStudioが自動判断<br>**XMLファイルを使用**：内容をコードで解析（アドイン対応できない）<br>**EXCELインスタンスを使用**：Excelアプリケーションでプレビュー |

https://docs.uipath.com/activities/lang-ja/docs/project-settings-excel

# 終わりに

以上、モダンデザイン「Excelモダン編」でした。

次回以降は、実際にアクティビティを使う時の「注意点、コツ」を書きたいと思います。
モダンでなくクラシックを使ったほうが良い場合など、アクティビティの新旧比較をしながら紹介する予定です。

＜ToDo：記事を書いたらリンクを貼る＞

この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。