
フォルダ内のファイルをまとめて処理する方法を紹介します。
Power Automate Desktop(PAD)でファイルを操作していると、
- フォルダ内にあるファイルをまとめて処理したい
- 複数のExcelファイルを順番に処理したい
- フォルダ内のファイルを別のフォルダへ移動したい
- ファイル名を取得して処理したい
- 毎回同じ作業をしているファイル処理を自動化したい
といったことがあります。
ファイルが数個程度であれば手作業でも対応できますが、ファイル数が多くなると時間がかかります。
PADでは、フォルダ内のファイルを取得し、「For each」を使って1ファイルずつ処理することができます。
フォルダ内のファイルをまとめて処理する方法
今回は、次のようなフォルダを用意します。
C:\PAD\処理前
フォルダの中には、
売上01.xlsx
売上02.xlsx
売上03.xlsx
売上04.xlsx
という4つのExcelファイルが入っているとします。
これらのファイルをPADで取得し、
- ファイルを取得
- 1ファイル目を処理
- 2ファイル目を処理
- 3ファイル目を処理
- 4ファイル目を処理
というように順番に処理していきます。
基本的なフローは以下のようになります。
- フォルダ内のファイルを取得
- For each
- 取得したファイルを処理
1.フォルダ内のファイルを取得する
まず、フォルダ内にあるファイルを取得します。
PADのアクションから、「フォルダー内のファイルを取得」を追加します。

フォルダには、処理したいファイルが入っているフォルダを指定します。
例えば、
C:\PAD\処理前

を指定します。
これで、指定したフォルダ内にあるファイルを取得できます。
取得したファイルは、変数に保存されます。
デフォルトでは、
%Files%
という変数が作成されます。
この変数には、フォルダ内にある複数のファイルが入っています。

2.For eachで1ファイルずつ処理する
次に、取得したファイルを1つずつ処理します。
アクションから、「For each」を追加します。

For eachの「反復処理を行う値」に、
%Files%

を指定します。
これで、フォルダから取得したファイルを1つずつ処理できます。
例えば、フォルダに4つのファイルがある場合、
1回目 → 売上01.xlsx
2回目 → 売上02.xlsx
3回目 → 売上03.xlsx
4回目 → 売上04.xlsx
というように処理されます。
CurrentItemについて
For eachでは、現在処理しているファイルを変数で取得できます。
デフォルトでは、
%CurrentItem%
という変数を使用します。
1回目の処理では、
売上01.xlsx
2回目の処理では、
売上02.xlsx
というように、現在処理しているファイルが入ります。
つまり、%CurrentItem%を使用することで、「今処理しているファイル」を指定できます。
3.現在のファイルを確認する
最初は、正しくファイルを取得できているか確認してみましょう。
For eachの中に、「メッセージを表示」アクションを追加します。
メッセージに、
%CurrentItem%

を指定します。
フローを実行すると、フォルダ内のファイルが1つずつ表示されます。

1回目は、
C:\PAD\処理前\売上01.xlsx
2回目は、
C:\PAD\処理前\売上02.xlsx
というように表示されます。
これで、フォルダ内のファイルを1つずつ取得できていることを確認できます。
4.Excelファイルを1つずつ処理する
フォルダ内のファイルを取得するだけではなく、取得したExcelファイルを実際に開いて処理することもできます。
例えば、フォルダ内に、
売上01.xlsx
売上02.xlsx
売上03.xlsx
があるとします。
これらを1つずつ開いてExcelのデータを読み取りたい場合は、For eachの中にExcel関連のアクションを追加します。
基本的な流れは、
- フォルダ内のファイルを取得
- For each
- Excelの起動
- Excelデータを読み取る
- 必要な処理を行う
- Excelを閉じる
となります。
「Excelの起動」で開くファイルとして、
%CurrentItem%


を指定します。
これで、現在処理しているExcelファイルを開くことができます。
Excelのデータを1行ずつ処理する場合
「PADでExcelのデータを1行ずつ処理する方法」と組み合わせることもできます。
例えば、フォルダ内に複数のExcelファイルがあり、それぞれのExcelに売上データが入っているとします。
この場合、
- フォルダ内のExcelファイルを取得
- 1つ目のExcelを開く
- Excelのデータを読み取る
- For eachで1行ずつ処理
- Excelを閉じる
- 2つ目のExcelを開く
- Excelのデータを読み取る
- For eachで1行ずつ処理
という処理を作ることができます。
つまり、ファイルを1つずつ処理するFor eachと、Excelの行を1つずつ処理するFor eachを組み合わせます。

大量のExcelファイルを自動処理するときに非常に便利な方法です。
特定の拡張子だけ処理する
フォルダ内にExcel以外のファイルも入っている場合があります。
例えば、
売上01.xlsx
売上02.xlsx
売上03.xlsx
売上01.pdf
売上02.pdf
のような状態です。
Excelファイルだけを処理したい場合は、ファイルを取得するときに拡張子などの条件を指定します。
例えば、
*.xlsx

を指定すると、Excelの.xlsxファイルを対象にできます。
これにより、
売上01.xlsx
売上02.xlsx
売上03.xlsx
だけを取得して処理できます。
PDFなど、対象外のファイルを処理する必要がなくなります。
サブフォルダも対象にする場合
フォルダの中にさらにフォルダがある場合があります。
例えば、
C:\PAD\処理前
├ 売上01.xlsx
├ 売上02.xlsx
└ 2026年10月
├ 売上03.xlsx
└ 売上04.xlsx
のような構成です。
この場合、サブフォルダ内のファイルも処理したいのであれば、「フォルダー内のファイルを取得」アクションの設定で、サブフォルダを含めるようにします。

サブフォルダを含めることで、指定したフォルダの下にあるファイルもまとめて取得できます。

フォルダの構成によっては、不必要なファイルまで対象になることがあるため、処理対象を確認してから使用することをおすすめします。
ファイルを別のフォルダへ移動する
フォルダ内のファイルをまとめて処理した後、処理済みのファイルを別のフォルダへ移動することもできます。
例えば、「処理前」と、「処理済み」という2つのフォルダを用意します。
処理が終わったファイルを「処理済み」フォルダへ移動します。
フローは、
- フォルダ内のファイルを取得
- For each
- ファイルを処理
- ファイルを移動
となります。
ファイルの移動先として、
C:\PAD\処理済み
を指定します。
現在処理しているファイルとして、
%CurrentItem%
を指定すれば、処理が完了したファイルを移動できます。

これにより、次回フローを実行したときに、すでに処理したファイルを再度処理してしまうことを防ぎやすくなります。
ファイル名を使って処理を分ける
取得したファイルによって処理内容を変更することもできます。
例えば、
売上01.xlsx
在庫01.xlsx
顧客01.xlsx
というファイルがあるとします。
ファイル名を確認して、
売上 → 売上処理
在庫 → 在庫処理
顧客 → 顧客処理
のように処理を分けることができます。
この場合は、ファイル名を取得して「If」などの条件分岐を使用します。
例えば、ファイル名に「売上」が含まれている場合だけ処理する、といった条件を設定できます。

この方法を使えば、1つのフォルダに複数種類のファイルが入っていても、ファイルの種類に応じて処理を変更できます。
注意点・ポイント
ファイルがない場合に注意する
フォルダ内に処理対象のファイルが1つもない場合もあります。
例えば、
C:\PAD\処理前
が空になっている場合です。
この場合、ファイルを取得した後の処理が実行されません。
定期的に自動処理するフローを作る場合は、
ファイルがある→処理を実行
ファイルがない→処理を終了
というようにしておくと分かりやすくなります。
必要に応じて「メッセージを表示」などを使い、
処理対象のファイルがありません。
と表示することもできます。
ファイルを順番に処理するときの注意点
複数のファイルを処理するときは、1つのファイルの処理が終わってから次のファイルへ進むようにします。
例えばExcelファイルを処理する場合、
- Excelファイルを開く
- データを処理
- Excelを保存
- Excelを閉じる
- 次のファイルへ
という順番にします。
Excelを閉じる前に次のファイルを開こうとすると、Excelインスタンスの扱いが分かりにくくなったり、ファイルがロックされた状態になったりすることがあります。
そのため、1ファイルの処理を最後まで終わらせてから次のファイルへ進むようにするのがおすすめです。

毎回同じフォルダに入っているファイルを手作業で処理している場合は、PADで自動化すると作業時間を大幅に減らせる可能性があります。


