UiPath Excel操作ハンズオン 前半

テンプレートは後日追加します。

# 0. 事前準備
今回のハンズオンで使用するテンプレートを事前に配置しておきます。
`Cドライブ直下`に`WORK`という名前のフォルダを作成し、WORKフォルダ内に`課題`フォルダをコピーしてください。

フォルダ構成は以下。

``` cmd
C:\WORK\課題
    sample.csv
    テンプレート.xlsx
    成果物.xlsx
```

# 1. 今回作成するロボットの内容

CSVファイルのデータをエクセルに書き込み、エクセルファイルを整形するロボットを作成します。
これにより、以下操作をロボット化する方法が学べます。
　①CSVデータ読み込み⇒エクセルへ書き込み
　②エクセルデータ読み込み⇒エクセルへ書き込み
　③エクセル画面の操作(フォント変更)
　④ロボット作成の一連の流れ


# 2. ロボットの作成
## 2.1 プロジェクトの新規作成

UiPath Studioを開き、スタートタブの新規プロジェクトから「プロセス」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/4a2bd26a-3424-f3b5-c825-acf7fb27585f.png)

任意の名前と説明を入力してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/e3d0eca8-fb22-2ecf-bed4-2ada226a81eb.png)

## 2.2 メインワークフローを作成
プロジェクトが作成されたら、`Mainワークフローを開く`を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/8a456f8b-72c6-65ae-fb71-b3ea85d8812f.png)

このメインとなるワークフロー内に処理を作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/9ae8b078-fe99-5773-8b12-b8480d147504.png)

ロボットに処理を追加するときは、左側の`アクティビティ`タブ内から基本となる処理を選択し、動きを追加していく形になります。

初めに、処理の大枠となる、課題シーケンスを作成します。

左側のアクティビティからシーケンスをドラッグ＆ドロップで追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/8463299e-58ab-faf8-38d9-a05202f621cb.png)

シーケンス等の名前は、名前部分をダブルクリックすることにより、自由に変更できます。
今回作成するシーケンスの名前は「課題」としておきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/b8078b8e-fb45-2bb2-15ab-891ca7c414ef.png)

## 2.3 作業するパスの指定
### 2.3.1 変数の定義

画面下部にある`変数`をクリックして、変数タブを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/96965a61-9c9c-670b-ba60-485b38b2b635.png)

以下変数を作成します。

|名前  |変数の型  |スコープ  |
|---|---|---|
|workpath  |String  |課題  |
|csvdata  |System.Data.DataTable  |課題  |
|exceldata  |System.Data.DataTable  |課題 |

※変数のスコープとは・・・  
　スコープとは、変数の有効範囲のことであり、今回はスコープを「課題」としているため、
　先ほど作成した、「課題シーケンス」内でのみ使用できる変数ということを表しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/38753e80-f38d-cbe7-e21f-c96cd3e7f68c.png)


### 2.3.2 変数の代入

`ワークフロー→制御→代入`を課題に追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/74929c6c-5991-294d-da6b-8c5ba4bed6f3.png)

`workpath = "C:\WORK\課題\"`
となるように入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/8c7e8f0f-3dbf-d6ae-5329-046bd19a0bad.png)

## 2.4 CSVを読み込む処理作成
`アプリの連携→CSV→CSVを読み込み`を先ほど作成した`代入`の下に追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/6ba1b8df-f3c2-0b7c-516a-cfb6eb2c0a86.png)

読み込み元ファイルと出力先を指定します

今回は、課題フォルダ内にある`sample.csv`を読み込みたいので、読み込み元ファイルを
`workpath +  "sample.csv"`とします。
（先ほど代入のところで、`workpath = "C:\WORK\課題\"`としているため、workpath +  "sample.csv"とすると`C:\WORK\課題\sample.csv`が指定できます。）

今回、CSVの先頭行はヘッダーとして使用しないため、`先頭行をヘッダーとする`のチェックは外します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/0548bf8b-d66b-82c1-8c9b-8cb5bfef8878.png)

ここまでで、csvからデータを読み取り、`csvdata`という変数に格納することができました。

## 2.5 テンプレート側処理作成

これから、テンプレートのエクセルファイル内にデータを書き出す処理を作成します。

### 2.5.1 エクセルファイルを開く
まずは、エクセルファイルを開く処理を追加します。

`アプリの連携→Excel→処理→Excelアプリケーションスコープ`を`CSV読み込み`の下に追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/c9939ae3-887d-5c61-b621-7dc631b6bb87.png)

ブックのpathを指定します。
`workpath + "テンプレート.xlsx"`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/fa85d32e-5bc2-d3ec-d48d-8696c5bc9bdf.png)

また、右側のプロパティ欄にある`新しいファイルの作成`チェックボックスを外しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/0a426fee-76e6-f6de-535b-ceacc8349b29.png)


### 2.5.2 開いたエクセルファイルのアクティベート（選択している状態にする）

エクセルのブックを開いた後に、ウィンドウをクリックしてアクティベートする（EXCELを操作している状態にする）必要があるため、
`UI Automation→要素→コントロール→アクティベート`を`実行`内に追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/ef4b3cf1-75e6-2d88-907c-95b433ffeeaf.png)

ここで一度、課題フォルダ内にある`テンプレート.xlsx`を開き、その後、先ほど追加した`アクティベート`内の「画面上で指定」をクリックします。
その後、先ほど開いた`テンプレート.xlsx`の画面上部（テンプレート - Excelと書いてある辺り）をクリックします。
このようにすることで、先ほど開いたエクセルを選択（アクティベート）してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/2cad5a77-7f25-438d-3a8b-af6d9bddbaab.png)

### 2.5.3 エクセルファイルに書き込み
先ほどcsvから読み込んで`csvdata`という名前の変数に保存してあるデータをエクセルに書き込む処理を追加します。
`アプリの連携→Excel→範囲に書き込み`を追加します。
書き込む先は"sheet1"の"A2"セルに貼り付けとし、先ほど保存してある`csvdata`から張り付けるようにします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/59ec6c52-c75f-4aea-3b3e-c7d5328a9193.png)

ここまでで一度実行してみましょう。

ファイルをデバックを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/4af4f713-b0ce-dc33-763e-1a622bdb7cb6.png)


うまく作成できていれば、CSVのデータがエクセルに貼り付けられて以下のようになるはずです！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/515105/43452e75-a271-cb36-a685-0d14d6aba04a.png)

実行が確認出来たら年月・金額１・金額２の内容は削除してテンプレートは閉じておきましょう。
（合計の列には計算式が入っているので、削除しないでください。）

[後半](https://qiita.com/rkhcx/items/625f8dc17bf6adb08dec)に続く