Power Automate Desktopがなんとなく使える講座 #1 Excelデータのコピー

　Power Automate Desktopを使ってExcelを操作する方法を見ていきましょう。インストールの仕方や、細かい操作説明は割愛します。

# Power Automate Desktopの新規フロー作成
　Power Automate Desktopで新規フローを作成すると、以下の画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/3de8db97-1246-baaa-0da9-151bc1dfe42f.png)
　それぞれ、アクションペイン、ワークスペース、変数ペインと呼びます。

# Excelの起動
　アクションペインから「Excelの起動」を選択し、ワークスペースにドラッグ＆ドロップすると、以下の画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/4425729f-a227-4a73-7467-5ec46a25a846.png)
　Excelの起動の項目では、「空のドキュメントを使用」と「次のドキュメントを開く」が選択できます。既にあるエクセルファイルを開く場合は「次のドキュメントを開く」を選択し、ドキュメントパス欄の右側の「ファイルを開く」アイコンを選択してエクセルファイルを選択します。
　今回は、以下のようなエクセルブックを使っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/5a51ac48-79f5-b426-fc63-7443c98d01fb.png)![Something went wrong]()


# すべてのExcelワークシートの取得
　アクションペインから、「すべてのExcelワークシートの取得」をワークスペースにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/3df93ae8-463b-bb81-3a32-177725ba4895.png)
 このアクションで生成される「SheetNames」という変数に入る値を確認するために、一度実行してみます。実行後に変数ペインの「SheetNames」をダブルクリックすると、変数の値が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/ca367e03-94b4-e467-b509-1e042f4d3fac.png)
　SheetNamesは、エクセルブックのシート名が、0から始まるリストとして取得されており、最初のシートは SheetNames[0] となります。

# アクティブなExcelワークシートの設定
　今回のエクセルブックは、シートが１つしかないので、特に気にする必要はないのですが、複数シートがあり、最終保存時にどのシートが選ばれているか分からないような場合に、データが登録されているシートをアクティブに指定する必要があります。
　「アクティブなExcelワークシートの設定」では、シートの指定にシートの名前かインデックスを使うことができます。インデックスは、エクセルブック内のシートの順番のことで、１から始まります。単純にインデックスで１を指定すれば良いのですが、ここは先に取得したワークシート名のリストを使って以下のように、ワークシート名に**「%SheetNames[0]%」**指定します。
　変数名を入力するには、入力項目の右端にある「{x}」をクリックすると、ウインドウが開いて選択することができます。「SheetNames」を選択すると、ワークシート名には「%Sheetnames%」と表示されますので、最後の%の前に「[0]」を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/00c4d636-0fab-d081-f6b8-8d582778e030.png)

# Excelワークシートから読み取り
　ワークシートのデータを読み込むには、まず、読み込む範囲を調べます。「Excelワークシートから最初の空の列や行を取得」を使うと、最後のデータが入ってるセルの次の列、行の位置を取得することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/023401a1-b539-b7a7-a2ca-4df2b67ebb1d.png)
　その値を使って、「Excelワークシートから読み取り」を行います。「取得」の項目では、「単一セルの値」「セル範囲の値」「選択範囲の値」が選べますが、今回は「セル範囲の値」を選んで、1列1行目から、先ほど取得した FirstFreeColumn, FirstFreeRowの範囲を選択します。
　ただし、FirstFreeColumn, FirstFreeRowの値は最後のデータの次の列、行を示しているので、最後のデータは、それより1少ない値にしなければいけません。「変数を小さくする」で１づつ減らしてやってもよいのですが、「最終列」、「最終行」の項目で直接書き込むことも出来ます。変数は「%」で囲まれるのですが、変数を計算するには、**「%FirstFreeColumn -1 %」**のように、%で囲まれた中に計算式を書き込みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/3a5fc29f-937c-574e-8fea-fe3bc14539cb.png)

# 新しいワークシートにデータを書き込む
　「新しいワークシートの追加」を選択し、新しいワークシートを作ります。作成場所は一番前か、一番最後を選択できます。今回は、「最初のワークシート」を選択して、先ほどのデータの入ったシートの前に追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/a009789f-2bbc-8cb3-50fd-cd96653356c7.png)
　次に、「Excelワークシートに書き込み」を選び、書き込む値に「%ExcelData%」と、列、行に1を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/e8b624f5-cbc7-ec1f-b20a-0f2664a13b22.png)

　ここまでのフローは以下の通りとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/ff5516ac-2d78-07da-40c5-482d740b1097.png)

　実行させると、以下のように、全データを別シートにコピーすることができました。
![motion1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/207e1771-bd10-8ea9-c98e-e2ff79a9a628.gif)