ビジネスを遂行する上で、Excelを使ったドキュメントをお客様に提出する場面があることは多く、加えて各ExcelシートのカーソルをA1にそろえることが必須であることが大多数であると思います。
プロジェクト成果物をお客様に納品する際、数十にわたるドキュメントのシートをA1にそろえる作業に時間がかかってしまいました。
今回は、Power Automate Desktopを使用してExcelドキュメントを自動成型し、作業の効率化を図っていきます。
Power Automate Desktopとは
ここで使用する「Power Automate Desktop(以下PAD)」とは、Microsoftが提供するアプリケーションの一つで、個人のデスクトップ上で使用できる「RPA(Robotic Process Automation)ツール」になります。
いわゆるローコードで視覚的にバッチジョブを作成することができます。
特徴
無償版や有償版のPADがあるなど、列挙すべき特徴は様々ありますが、個人的に特徴的だと感じているのは下記2点です。
- ローカルに保存したファイルの操作が可能である
- Office製品をまたぐ連携が可能である
ローカルで作業したファイルの最終確認を自動化できたり、作成したファイルをメールで送信したりできることが、非常に便利だなと感じています。
Power Automateとの違い
Power Automateは完全にクラウド型で実行するアプリケーションです。PADとは違い、自動実行することが可能なため、完全自動化を実現することができます。
しかしながら、PADは作成したジョブを手動実行する必要があり、オンデマンドで実行することができるため、不測に実行されないというメリットがあります。
もちろん、Power AutomateとPADを組み合わせることもできるため、それぞれのアプリケーションが完全に隔離されているわけではありません。
(余談ですが、バッチファイル(*.bat)を作成して定期的に実行するような処理を、Power AutomateとPADで実現できます。)
実現したい操作
下記2点を実現するPADジョブを作成します。
- フォルダ内に配置したExcelファイルのすべてのシートでA1に合わせる
- Excelファイルの左にあるシートで開くようにする
前提条件
前提条件は下記2点です。
- PADがインストールされていること
- ローカルフォルダを作成し、Excelファイルを配置したこと
PADのインストール方法は下記リンク先の3-1を参照ください
ここでは、任意のフォルダ内に3つのExcelファイルを配置し、それぞれ5つのシートを作成します。
それぞれのシートのカーソルは下記表に基づいて作成しました。
※ ファイル名やシート名は適宜変更いただいてもかまいません。
ジョブの概要(フロー図)
フロー図は下記の通りになっています。
ジョブの作成
それでは実際にジョブを作成に移ります。
ジョブの全体像は投稿の下部に記載していますので、作成後の全体チェックにご活用ください。
1.PADを起動します
2.「+新しいフロー」を押下します
3.フロー名を入力し、「作成」を押下します
4.「フォルダーが存在する場合」アクションを追加し保存します
- フォルダーが存在す場合:存在する
- フォルダーパス:{各自で作成したフォルダーを指定}
5.「フォルダー内のアクションを取得」アクションを追加し、保存します
- フォルダー:{各自で作成したフォルダーを指定}
- ファイルフィルター:*.xlsx
- サブフォルダーを含める:ON(トグルを右側にします)
6.「For each」アクションを追加し、保存します
- 反復処理を行う値:%Files%
7.「Excel の起動」アクションを追加し、保存します
- Excel の起動:「次のドキュメントを開く」を選択
- ドキュメント パス:%CurrentItem%を選択
- インスタンスを表示する:ON(トグルが右側にある状態)
8.「すべてのExcelシートの取得」アクションを追加し、保存します
- Excelインスタンス:%ExcelInstance%
9.手順6で作成したFor eachアクション内に「For each」アクションを追加し、保存します
- 反復処理を行う値:%SheetNames%
10.「アクティブなExcelワークシートの設定」アクションを追加し、保存します
- Excel インスタンス:%ExcelInstance%
- 次と共ににワークシートをアクティブ化:「名前」を選択
- ワークシート名:%CurrentItem2%
11.「Excelのワークシート内のセルをアクティブ化」アクションを追加し、保存します
- Excel インスタンス:%ExcelInstance%
- アクティブ化:「絶対一で指定したセル」を選択
- 列:1
- 行:1
12.2つ目のFor eachアクションを抜け、「アクティブなワークシートの設定」アクションを追加し、保存します
- Excel インスタンス:%ExcelInstance%
- 次と共にワークシートをアクティブ化:「インデックス」を選択
- ワークシート インデックス:1
13.「Excelの保存」アクションを追加し、保存します
- Excel インスタンス:%ExcelInstance%
- 保存モード:「ドキュメントを保存」を選択
14.「Excelを閉じる」アクションを追加し、保存します
- Excel インスタンス:%ExcelInstance%
- Excel を閉じる前:「ドキュメントを保存しない」を選択
作成したジョブの全体像
作成したジョブの全体像は下記のようになります。
上記のようなジョブの作成が完了したら、ジョブの保存を行い実際にテストをします。
ジョブのテスト
前提条件として作成したセルの位置がA1に変更されていることを確認します。
ジョブを実行すると、実際にExcelが開いて自動で操作されるのがわかります。
ジョブ終了後の各シートの位置は下記のようになりました
終わりに
今回はPADを使用してローカルフォルダに配置したExcelドキュメントの各シートをA1にするジョブを作成しました。
テストとして、フォルダー内にはExcelファイルのみを配置しましたが、Excelファイルを配置したサブフォルダーをフォルダー内に作成しても適用されます。
Excelのマクロを組まずに直感的にジョブを作成できて、とても便利だなと感じました。
直近で携わったプロジェクトでは15個前後のExcelドキュメントに平均して20シート程(最大100シート程)のシートがあったため、作成したジョブを使用していれば納品までの作業の時間が多少削減できたのかもしれません。
李 兆昊(日本ビジネスシステムズ株式会社)
現在、Microsoft 365の導入を担当しています。主な担当はTeamsとSharePoint Onlineです。 体を動かすのが好きで、週末は必ず海に出ています!
担当記事一覧