Microsoftデスクトップ用 Power Automate

Power Automate Desktop フォルダー内のExcelブックをワークシートにまとめる

Power Automate Desktop フォルダー内のExcelブックをワークシートにまとめるのタイトル画像
スポンサーリンク
スポンサーリンク
ピピル
ピピル

毎月、各支店から売上が入力されているExcelブックが送られてくるのですが、別々のExcelブックに保存されています。
送られてくる支店別の売上表を1つのワークシートにまとめたいのですが、何か良い方法はないですか。

ピピン
ピピン

デスクトップ用Power Automateを使用すれば、自動で複数のExcelブックを1つのワークシートにまとめることができます。
同じ形式のExcelブックを決まったフォルダーに置いてPADを実行すると、自動で1つのワークシートにまとめられます。
1つのワークシートにまとめることで、ピボットテーブルやフィルターを使用するときも便利です。

日報や報告書など、支店や部署及び従業員ごとに送られてくる、決まった様式の複数のExcelブックを1つのワークシートにまとめる方法をご紹介します。

今回は毎月支店から送られてくる売上の報告書を1つのワークシートにまとめる方法をご紹介します。

まとめるExcelブック

2つのExcelブックと各Excelブックに2つのワークシートが作成されています。

まとめるExcelブック3
まとめるExcelブック4
まとめるExcelブック1
まとめるExcelブック2

複数のExcelブックを1つのワークシートにまとめます。

完成形

設置するフロー

完成1
完成2

1.フォルダーの選択ダイアログを表示

まとめたいExcelブックが保存されているフォルダーを選択します。

今回は各支店から送られてくる売上日報が保存されているフォルダーを選択します。

1.アクションの「メッセージボックス」から「フォルダーの選択ダイアログを表示」をワークスペースにドラッグ&ドロップします。

追加するアクション
フォルダーの選択ダイアログを表示
フォルダーの選択ダイアログを表示

ダイアログの説明:説明が必要な場合は入力します。

・初期フォルダー:まとめたいExcelブックが保存されているフォルダーの場所が決まっている場合は、初期フォルダーにExcelブックの入っている親フォルダーを入力します。
※右にあるフォルダーアイコンから選択できます。
場所が決まっていない場合は空白のままにします。

2.If

上記の「フォルダーの選択ダイアログを表示」で表示されたフォルダー選択をキャンセルした場合に、それ以降の処理を行わないようにIFで処理します。

1.アクションの「条件」から「If」をワークスペースにドラッグ&ドロップします。

追加するアクション
IF
If

・最初のオペランド:カスタムフォームを表示で生成された変数 %ButtonPressed%を入力します。

・演算子:と等しくない(<>)を選択します。

・2番目のオペランド:Cancel と入力します。

IFの条件分岐で、キャンセルではない(等しくない)場合に処理が実行されます。
キャンセルした場合は、処理が中断されます。

3.フォルダー内のファイルを取得

フォルダー内のExcelブックを取得します。

1.アクションの「フォルダー」から「フォルダー内のファイルを取得」をIfの中にドラッグ&ドロップします。

追加するアクション
フォルダー内のファイルを取得をIfの中にドラッグ&ドロップ
フォルダー内のファイルを取得

・フォルダー:%SelectedFolder%
フォルダーの選択ダイアログを表示」で生成された変数を使用します。

・ファイルフィルター:*.xlsx
ファイルの拡張子をExcelに制限したいので、*の後ろにExcelの拡張子を入力します。
※2つの拡張子に対応する場合は*.xl*と入力します。
Excelブック(xlsx)、マクロ有効ブック(xlsm)の両方に対応できます。

サブフォルダーを含める:サブフォルダーを含める場合はチェックを入れます。

4.Excelの起動

「フォルダー内のファイルを取得」で取得したExcelブックを新規のExcelブックに転記します。

売上日報のデータをまとめる新規のExcelブックを起動します。

1.アクションの「Excel」から「Excelの起動」をIfの中の「フォルダー内のファイルを取得」の下にドラッグ&ドロップします。

追加するアクション
アクションの「Excel」から「Excelの起動」を「フォルダー内のファイルを取得」の下のIfの中にドラッグ&ドロップします。
Excelの起動 空のドキュメントを使用

Excelの起動:空のドキュメントを使用します。
生成された変数:変数を「Excel」に変更します。
※生成された変数をそのまま使用しても問題ないですが、自分で把握しやすい変数名に変えることもできます。

5.変数の設定

Excelの転記先の行を自動で変更する為に、変数を設定します。

Excelの転記先の行を自動で変更する為に、変数を設定します。

1.アクションの「変数」から「変数の設定」をIfの中の「Excelの起動」の下にドラッグ&ドロップします。

追加するアクション
アクションの「変数」から「変数の設定」を「Excelの起動」の下のIfの中にドラッグ&ドロップします
変数の設定

変数:NewVar
変数名を変更したい場合は、NewVarをクリックして変数名を入力して変更します。
値:
列名の次の2行目からデータを入力していくので、値を2に設定します。

6.End

1.「変数の設定」の下に「IfのEnd」を設置します。

IfのEnd

7.Loop

Loopを設置して、「フォルダー内のファイルを取得」で読み取ったExcelブックを起動し、すべてのワークシートからデータを取得して、新規で起動したExcelブックに書き込んでいきます。

Excelブックの数だけ「ループ」で繰り返し処理を行います。

1.アクションの「ループ」から「Loop」をワークスペースにドラッグ&ドロップします。

追加するアクション
Loop
Loop

開始値:0
終了:%Files.Count-1% 
読み取ったExcelブックの番号が0から始まるので-1します。
増分:1

8.Excelの起動(転記元のExcelブック)

「フォルダー内のファイルを取得」で生成された変数「Files」に格納されているExcelブックを開きます。

追加するアクション
Excelの起動

1.アクションの「Excel」から「Excelの起動」をワークスペースにドラッグ&ドロップします。

Excelの起動

・Excelの起動:次のドキュメントを開く
・ドキュメントパス:%Files[LoopIndex]%
LoopIndexを使用してExcelブックの数だけ開きます。
生成された変数:%ExcelInstance%

9.すべてのExcelワークシートの取得

LoopアクションでExcelブックのワークシートの数だけループ処理するため、「すべてのExcelワークシートの取得」から生成されたSheetNames.Countを取得します。

SheetNames.Countにはワークシートの数が格納されているので、その数を利用してループ回数を自動で決定します。

追加するアクション
すべてのワークシートの取得

1.アクションの「Excel」の「詳細」から「すべてのExcelワークシートの取得」をワークスペースにドラッグ&ドロップします。

すべてのExcelワークシートの取得

・Excelインスタンス:%ExcelInstance%
生成された変数:SheetNames

10.Loop

LoopアクションでExcelブックのワークシートの数だけ、ループ処理します。

今回はExcelブックに2つのワークシートが作成されています。

追加するアクション
Loop

1.アクションの「ループ」から「Loop」をワークスペースにドラッグ&ドロップします。

Loopのパラメータの選択

開始値:

次のアクションで使用する「アクティブなExcelワークシートの設定アクション」の「次と共にワークシートをアクティブ化」をインデックスに設定する場合、インデックス番号は1から始まりますので、開始値に1を入力します。

アクティブなExcelワークシートの設定

終了:%SheetNames.Count%

SheetNames.Countのカウント数だけ、ループさせます。

%SheetNames.Count%の選択方法
①パラメータ選択の終了:右側の{☓}をクリックします。
②SheetNamesの▷をクリックします。
③.Countをクリックして選択した状態にします。
④選択をクリックします。

SheetNames.Countを選択します。

増分:1
ループの数を1ずつ増やしていきます。

フロー番号11で使用する「アクティブなExcelワークシートの設定」のワークシートインデックスに今回生成された変数LoopIndexを使用します。

11.アクティブなExcelワークシートの設定

Excelブックから読み取りたい、ワークシートを設定します。

今回は全てのワークシートからExcelDataを取得します。

追加するアクション
アクティブなExcelワークシートの設定

1.アクションの「Excel」から「アクティブなExcelワークシートの設定」をワークスペースにドラッグ&ドロップします。

アクティブなExcelワークシートの設定

・Excelインスタンス:%ExcelInstance%

・次と共にワークシートをアクティブ化:インデックス
ワークシートを左から順番にインデックス番号で開いていきます。

・ワークシートインデックス:%LoopIndex%
すべてのワークシートを開くために、ワークシートインデックスにLoopで生成された変数LoopIndexを使用し、ループの回数でインデックスの番号を取得します。

12.Excelワークシートから最初の空の列や行を取得

「Excelワークシートから最初の空の列や行を取得」のアクションを設置し、Excelワークシートの最終行のデータを取得します。

追加するアクション
Excelワークシートから最初の空の列や行を取得

1.アクションの「Excel」から「Excelワークシートから最初の空の列や行を取得」をワークスペースにドラッグ&ドロップします。

Excelワークシートから最初の空の列や行を取得

・Excelインスタンス:%ExcelInstance%

13.Excelワークシートから読み取る

Excelブックのワークシートから、読み取るセル範囲を設定します。

追加するアクション
Excelワークシートから読み取る

1.アクションの「Excel」から「Excelワークシートから読み取」をワークスペースにドラッグ&ドロップします。

読み取る範囲
Excelワークシートから読み取る

・Excelインスタンス:%ExcelInstance%
・取得:セル範囲の値
・先頭列:A
・先頭行:1
・最終列:G
・最終行:%FirstFreeRow% ・Excelワークシートから最初の空の列や行を取得で生成された変数を使用します。
生成された変数%ExcelData%

14.For each

For each」アクションのループ処理で1行ずつ、Excelデータを変数Currentltemに格納します。

1.アクションの「ループ」から「For eachをドラッグ&ドロップします。

追加するアクション
Excelワークシートに書き込む
For each

反復処理を行う値:Excelワークシートから読み取りで生成された変数%ExcelData%を入力します。
生成された変数:CurrentltemにExcelDataが1行ずつ格納され、行数分ループします。

15.Excelワークシートに書き込む

読み取ったExcelデータを、新規のExcelブックに転記していきます。

追加するアクション
Excelワークシートに書き込む

1.アクションの「Excel」から「Excelワークシートに書き込む」をワークスペースにドラッグ&ドロップします。

Excelワークシートに書き込む

・Excelインスタンス:%Excel%
フロー番号4「Excelの起動」で設定した変数Excelを入力します。

・書き込む値:%CurrentItem%
行単位で転記するために、フロー番号14のFor eachの変数を使用します。

・書き込みモード:指定したセル上
・列:A
・行:%NewVar%

フロー番号5の「変数の設定」で設定した変数を使用します。

16.変数を大きくする

上記のExcelワークシートに書き込む(フロー番号15)で設定した行:%NewVar%に「変数を大きくする」でLoopする都度NewVarに+1していき、行番号を増やしていきます。

行番号を増やすことで、次の「」に自動で移動するように設定します。

追加するアクション
変数を大きくする

1.アクションの「変数」から「変数を大きくする」をワークスペースにドラッグ&ドロップします。

変数を大きくする

・変数名:%NewVar%
・大きくする数値:1

17.End

Endを適切な位置に配置します。

End

18.変数を小さくする

Excelデータの転記中に別のワークシートに移る際、変数の設定で1行空白行ができてしまうので、1つのワークシートの転記が終わり、次のワークシートに移行する際にNewVarの変数を1つ小さくします。

ワークシートが1行ずれる
追加するアクション
変数を小さくする

1.アクションの「変数」から「変数を小さくする」をワークスペースにドラッグ&ドロップします。

変数を小さくする

・変数名:%NewVar%
・小さくする数値:1

19.End

Endを適切な位置に配置します。

End

20.Excelを閉じる

「フォルダー内のファイルを取得」で開いた、転記元のExcelブックを閉じます。

追加するアクション
Excelを閉じる

1.アクションの「Excel」から「Excelを閉じる」をワークスペースにドラッグ&ドロップします。

Excelを閉じる

・Excelインスタンス:%ExcelInstance%
・Excelを閉じる前:ドキュメントを保存しない

21.End

Endを適切な位置に配置します。

End

22.Excelワークシートに書き込む

最後にExcelデータの列名を、新規のExcelブックに転記します。

列名
追加するアクション
Excelワークシートに書き込む

1.アクションの「Excel」から「Excelワークシートに書き込む」をワークスペースにドラッグ&ドロップします。

Excelワークシートに書き込む

・Excelインスタンス:%Excel%
フロー番号4「Excelの起動」で設定した変数Excelを入力します。

・書き込む値:%ExcelData.ColumnHeadersRow%
Excelデータの列名が格納されている変数を選択します。

・書き込みモード:指定したセル上
・列:A

・行:1

以上でフォルダー内のExcelデータをまとめる方法をご紹介しました。

タイトルとURLをコピーしました