RPAのExcel操作はこの状況でも動くのか試してみた

マニュアルにはないけれど、実はこういう使い方ができると便利、という使い方がRPAにはあります。UiPathとAutomation Anywhereでそれぞれどのように動くのか、確かめてみました(^^)/✨

**環境**
UiPath Studio Pro 2020.8.0-beta 278
Automation Anywhere Community Edition バージョン A2019 (ビルド 6439)  
Excel for Office 365 16.0.12527.21096

# IRMのかかったExcelファイル

パスワードがかかったファイルはUiPathでもAutomation AnywhereでもRPA側に機能がある[^1]ので開けますが、Officeが提供している[Information Rights Management (IRM)](https://support.microsoft.com/ja-jp/office/%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E8%A8%B1%E5%8F%AF%E3%81%8C%E5%88%B6%E9%99%90%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%96%8B%E3%81%8F-c7a70797-6b1e-493f-acf7-92a39b85e30c)の仕組みで暗号化されたファイルを開けるかどうかは、あまり説明を見かけません。

[^1]: UiPathもAutomation AnywhereもExcelなしで使える機能 (それぞれ「ワークブック」、「Excelの基本機能」)およびExcelありで使える機能 (それぞれ「Excel」、「Excelの高度な機能」)の両方でパスワード付きのファイルを開く機能があります。

今回、前提として以下のようなIRMがかかったExcelファイルを用意します。中身は空っぽです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/14807c16-e1fd-8e01-1026-80a2a4939f00.png)

IRMには自分で「このブックへのアクセスを制限する」をONにして組織内のすべてのユーザーに変更権限を与えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/1bc145cc-d02a-5f6b-3a8d-24ccffd69094.png)


### UiPathの場合

#### Excel系アクティビティでのアクセス
以下のようなシーケンスを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/2e29b626-1366-df57-cb82-e95f259408fc.png)

その結果、A1セルにきちんと値が書き込まれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/2dde0912-8c7c-c82d-bf24-4a3c899ad62a.png)

#### ワークブック系アクティビティでのアクセス
以下のようなシーケンスを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/4a407376-ab8d-297c-c76f-284663338d4c.png)

実行すると、以下のように「パスワードを入力してください」というエラーになります。
暗号化されていて開けないとのことですが、IRMはパスワードでは開けないので、ワークブック系アクティビティではIRMはサポートされない、ということになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/ad86375f-e7f9-3e14-ab7c-6b41c8e98ca2.png)

### Automation Anywhereの場合

#### Excelの高度な操作でのアクセス
以下のようなアクションリストを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/a5fecca4-c24d-be18-08f2-2aa1b34882de.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/fbff3b6a-3b13-cd38-30ed-3d5cc0c48454.png)

その結果、A1セルにきちんと値が書き込まれます。(Automation Anywhereの場合はExcelが開き、値が書き込まれた状態でExcelが開いたまま終了します。まだファイル自体には保存されていません。保存するには別途ブックを保存アクションを挿入します。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/2dde0912-8c7c-c82d-bf24-4a3c899ad62a.png)

#### Excelの基本操作でのアクセス
以下のようなアクションリストを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/1fd98734-83df-20c1-b5bb-4c741c4a6ca8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/61b95555-a485-54ba-8a17-4ee0fdf650f9.png)


その結果、以下のようなエラーが出てしまいます。「Excel_MSパッケージ」つまりExcelの高度な操作パッケージを使えとのこと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/54646504-53b8-85ac-3332-d73cbb90f0da.png)


## まとめ
UiPathもAutomation Anywhereも、Excelを通した操作は、ファイルに権限さえあればExcelができるすべての操作ができますが、**Excelを使わない操作は独自実装なのでIRMはサポートしていない**ことがわかりました( ;∀;)

# SharePoint/OneDrive上にあるExcelファイルの操作
ExcelなどのOfficeアプリの場合、以下の書式でコマンドラインでファイル名にSharePoint/OneDrive上のURLを指定すると、SharePoint/OneDrive上にあるファイルを直接読み込むことができます(WebDAVというしくみです)。

```
excel.exe https://XXXXXX-my.sharepoint.com/personal/XXXXXX/Documents/Shared%20with%20Others/excel.xlsx
```

同じことをRPAから行った場合に同様に動くかどうかについて検証してみました。

### UiPathの場合
#### Excel系アクティビティでのアクセス
以下のようなシーケンスを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/628846d8-3b07-40a9-cd6a-bc5fa4f883af.png)

実行すると、以下のように「指定されたフォーマットのパスはサポートされていません」というエラーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/ce50a66c-e453-d882-f921-1a73e1d5b719.png)

#### ワークブック系アクティビティでのアクセス
以下のようなシーケンスを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/c2b1459d-c17e-7b97-f865-78d3c3a54ae0.png)

実行すると、Excel系と同様に、以下のように「指定されたフォーマットのパスはサポートされていません」というエラーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/9508de18-b5d4-2f6a-08b8-bbffa1262984.png)


### Automation Anywhereの場合

#### Excelの高度な操作でのアクセス
以下のようなアクションリストを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/eb60140f-065b-a3c4-efac-b87bed568522.png)

実行すると、以下のようなエラーが出ます。ファイル名として指定した文字列が絶対パスになっていなかったので、Bot Agentのインストールパスからの相対パスと解釈されたようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/cd3311ac-99b7-06aa-d969-5f6358eb1d9e.png)


#### Excelの基本操作でのアクセス
以下のようなアクションリストを作成して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/1fd98734-83df-20c1-b5bb-4c741c4a6ca8.png)
実行すると、やはり以下のようなエラーが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/cd3311ac-99b7-06aa-d969-5f6358eb1d9e.png)
## まとめ
**SharePoint/OneDrive上のファイルについては、UiPathからもAutomation Anywhereからも標準アクティビティ/アクションを使って直接扱うのは難しそう**です。



|￣￣|￣￣|￣￣|￣|≡≡∧,,∧　ﾝﾊﾞｯ!
|￣|￣￣|￣￣|￣￣|≡∠(*'ω')／　
|￣￣|￣￣|￣￣|￣|≡≡(　　(
|￣|￣￣|￣￣|￣￣|≡..＜￣￣＼