Power Automate Desktopは作業を定型化できる便利なツールです。エクセルにも対応しているので、エクセルの読み込みや書き込みにも威力を発揮します。
Power Automate Desktopでエクセル ファイル編
エクセルを開く
アクションで「Excel」の「Excelの起動」をドラッグします。
ダイアログが開くので「起動」で「次のドキュメントを開く」とし、ドキュメントファイルを選びます。
この状態で、上の再生ボタンを押すと、指定したエクセルファイルが起動することを確認しましょう。
エクセルを読み取る
開いたファイルの指定範囲を読み込みましょう。
アクションで「Excel」の「Excelワークシートから読み取り」をドラッグします。
するとダイアログが開きます。
B4セルの値をとるには、取得で「単一のセルの値」を選び、先頭列に「B」、先頭行に「4」と入れます。
実行して、フロー変数のところでB4セルにあった値が無事とれているか確認しましょう。
エクセルへ書き込む・保存する
アクションで「Excel」の「Excelワークシートに書き込み」をドラッグします。
するとダイアログが開きます。
書き込む値へ任意の値を入れ、書き込みモードや列、行を設定します。
以下は「B4」セルへ「ワンボーロン」という文字を書き込みます。
これで実際動かすと、以下のように変更できました。
ただしこれはまだ保存していないので、ファイルとしてはデータを保持していません。
そこで、アクションで「Excel」の「Excelの保存」をドラッグします。
保存モードは「ドキュメントを保存」にします。
これで実行後、エクセルファイルを個別に起動してみると、値が変更された状態で保存されていたことを確認できると思います。
エクセルを閉じる
アクションで「Excel」の「Excelを閉じる」をドラッグします。
データ保存をさせる場合「Excelを閉じる前」で「ドキュメントを保存」にしましょう。
以上の組み合わせで、
・特定のエクセルファイルを開く
・特定のセルを読む
・特定のセルを上書き
・ファイルを保存
・ファイルを閉じる
といった一連の流れをフローにできると思います。
CSVの操作
CSVファイルでは、また別にCSVファイル用のアクションが用意されているのでそれを使うと便利です。
活用サンプルについては以下参照ください。
【Power Automate Desktop】CSVを操作するには? - アプリの教科書
マクロの実行
マクロについては以下参照ください。
【Power Automate Desktop】エクセルのマクロ・VBAを実行するには? - アプリの教科書
Power Automate Desktopでエクセル 編集編
エクセルファイルを起動すると、「ExcelInstance」という変数を通じて開いたエクセルにアクセスできます。
シート
指定したシートをアクティブにする
セルの操作はアクティブなシートが対象で行われます。
そのため編集したいシートをアクティブにしておく必要があります。
アクションで「Excel>詳細>アクティブなExcelワークシートの設定」をフローに追加します。「ワークシート名」に指定したシートがアクティブとなります。
アクティブなワークシートを取得
行やセルの操作をする場合、アクティブなシートを確認してから操作したほうが間違が減ります。
アクションで「Excel>詳細>アクティブなExcelワークシートの取得」をフローに追加します。
実行後は「SheetIndex」という変数にアクティブなシートの番号が返ってきます。2つめのワークシートがアクティブだと2と返ってきます。
シートの追加
アクションで「Excel>詳細>新しいワークシートの追加」をフローに追加します。
「新しいワークシート名」で指定した名前のシートが作成されます。既に同じ名前のシートがある場合はエラーになります。
シートの削除
アクションで「Excel>詳細>Excelワークシートを削除」をフローに追加します。
「ワークシート名」で「Sheet2」などのように指定すると、該当するワークシートがある場合には削除されます。
シート名変更
アクションで「Excel>詳細>Excelワークシートの名前を変更」をフローに追加します。「ワークシート名」で指定したシートを「ワークシートの新しい名前」へ変更します。
シートが見つからない場合はエラーになります。
ワークシートをすべて取得
アクションで「Excel>詳細>すべてのExcelワークシートの取得」をフローに追加します。
実行すると「SheetNames」にシートの一覧が入ります。
個別のシート名ですが、例えば3つめのシート名は、0から数えて2つ目となるので「%SheetNames[2]%」のように指定して取得します。
行列
行の挿入
アクションで「Excel>詳細>Excelワークシートに行を挿入」をフローに追加します。
行インデックスで「2」のように指定すると2行目に空白行が挿入されます。
行の削除
アクションで「Excel>詳細>Excelワークシートから行を削除」をフローに追加します。
行の削除で「2」のように指定すると2行目が削除されます。削除されると、下の行が繰り上がります。
列の挿入
列は縦のならびです。
列を挿入するにはアクションで「Excel>詳細>Excelワークシートに列を挿入」をフローに追加します。列で指定した場所に挿入できます。
列の削除
列を削除するにはアクションで「Excel>詳細>Excelワークシートから列を削除」をフローに追加します。「列の削除」で指定した列を削除します。
最初の空白行、空白列
データの終わりを確認するには、最初に空白となっている行や列を調べることでチェックできる場合があります。
「Excel>Excelワークシートから最初の空の列や行を取得」をフローに追加します。
実行すると「FirstFreeColumn」に最初の空の列の番号、「FirstFreeRow」に最初の空の行の番号が入ります。
空白行
列で最初の空白行を取得することもできます。
「Excel>詳細>Excelワークシートから列における最初の空の行を取得」をフローに追加します。列を指定すると...
その列の最初の空白行の番号が「FirstFreeRowOnColumn」変数に格納されます。
セル
セル選択
アクションで「Excel>詳細>Excelワークシート内のセルを選択」をフローに追加します。
上記のような設定の場合、A2~C6までを選択状態にしたのと一緒の操作となります。
選択したデータを取得するには、選択後にさらにアクションで「Excel>詳細>選択したセル範囲をExcelワークシートから取得」をフローに追加します。
これで取得される変数は
- 選択開始の列の番号:FirstColumnIndex
- 選択された最後の列の番号:LastColumnIndex
- 選択開始の行の番号:FirstRowIndex
- 選択された最後の行の番号:LastRowIndex
となります。
セルのコピー、ペースト
セルのコピペも自動化できます。
アクションで「Excel>詳細>Excelワークシートからセルをコピー」をフローに追加します。列と行を指定します。
複数のセルをコピーするには、「コピーモード」で「セル範囲の値」にするか「選択範囲の値」で指定します。
アクションで「Excel>詳細>Excelワークシートにセルを貼り付け」をフローに追加します。貼り付ける先の列と行を指定します。
不具合
データ変更が反映されない?
エクセルのセルを編集した後は、「エクセルを保存するフロー」を実行しないと、変更したデータが書き込まれません。
作業後に保存するフローも、きちんと追加しておきましょう。
また、該当のエクセルファイルが起動中の場合、PADからは「読み取り専用」として開かれれてしまい、PADで行った編集や保存が反映されないケースもあります。
利用するエクセルファイルが閉じていることを確認してから実行してみましょう。
図形やグラフが取れない?
現在PADで提供されているアクションは上記のものであり、図形用アクションなどは見当たりません。
執筆時現在では、図形がとれるやり方の情報はないようです。