← 手順一覧へ戻る
Power Automate Desktopファイルよく使う

フォルダー内のファイル名を一覧にする(拡張子・探索範囲を比較)

同じ練習フォルダーで、全ファイル・Excelだけ・サブフォルダー込みの件数を比較します。名前リストと完全なパス、0件と取得エラーの違いも確認します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • ファイル自体は変更しません。この手順は名前のリストを作るだけで、Excelやテキストファイルへ保存しません。ArchiveというフォルダーそのものはFilesの項目には入りません。
  • Filesはファイルオブジェクトのリスト、FileNameListは取り出した名前のテキストのリストです。Nameは拡張子付きの名前、FullNameは完全なパスです。再帰検索で同名ファイルを区別するときはFullNameを使います。
  • 0件は取得成功後に一致するファイルがない状態です。存在しないフォルダーや読み取り権限の不足による取得エラーとは異なります。既定のエラー停止を保ち、失敗したアクションとパスを実行履歴で確認します。無断で権限を追加したり、管理者実行へ切り替えたりしません。
  • 新しいリストの作成を飛ばしてループだけ再実行すると、前回の一覧へ追加される場合があります。比較は先頭から実行します。広い共有フォルダーやドライブ全体では試さず、小さな練習場所から始めます。
  • ローカルでの手動実行を想定し、クラウド接続は使いません。組織の利用許可とライセンスを確認してください。クラウドからの起動や無人実行には別途の前提・ライセンスがあります。

1使うアクション

  1. アクション 1フォルダー内のファイルを取得*/サブフォルダーを含める=オフ → Files
  2. アクション 2新しいリストの作成空のFileNameListに初期化
  3. アクション 3For each%Files% → CurrentFile
  4. アクション 4項目をリストに追加%CurrentFile.Name% → %FileNameList%
  5. アクション 5EndFor eachの終わり
  6. アクション 6メッセージを表示一覧の件数:%FileNameList.Count%

図で見る処理のイメージ

概念図

入力:Input直下に見積.xlsx・報告.pdf、Archiveの中に別の見積.xlsx。まず直下だけを読み取り、名前を一覧にします。

  1. 元のフォルダー

    Input/見積.xlsx・報告.pdf・Archive(中に見積.xlsx)

  2. 取得する範囲

    *+オフ:直下のファイル2件。Archive自身は対象外

  3. 結果のリスト

    FileNameList:見積.xlsx、報告.pdf(2項目)

結果の例

同じ入力でも、フィルターと探索範囲によって2件→1件→2件に変わります。順序ではなく件数と内容を照合します。

同じ入力フォルダーでの設定と期待結果(実機の実行結果ではありません)
設定件数FileNameListの内容・処理結果
*/オフ/Name2見積.xlsx、報告.pdf
*.xlsx/オフ/Name1見積.xlsx(直下のみ)
*.xlsx/オン/Name2見積.xlsx、見積.xlsx(別の場所・重複削除なし)
*.xlsx/オン/FullName2C:\Work\Input\見積.xlsx、C:\Work\Input\Archive\見積.xlsx
*.csv/オフ/Name0空のリスト。ループ内は0回、件数表示は実行
存在しないフォルダー取得エラー既定では停止。0件の結果として扱わない

架空の入力と設定から説明した期待値です。実際のPower Automateフローを実行した結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する9ステップの設定と確認方法
  1. 1

    準備:WindowsのPower Automate for desktopで、Power Fxをオフにした練習用フローを作ります。既存の権限で読み書きできる C:\Work\Input を使い、作れない場合は自分の練習場所へ置き換えます。ローカルで手動実行する例です。

  2. 2

    入力例:Input直下に見積.xlsxと報告.pdfを置き、Input内にArchiveフォルダーを作って、その中にも見積.xlsxを置きます。どれも練習専用ファイルにします。内容は読み取らないため業務データは不要です。エクスプローラーで拡張子を表示し、見積.xlsx.xlsxなどになっていないか確認します。

  3. 3

    「フォルダー内のファイルを取得」:フォルダー=C:\Work\Input、ファイルフィルター=*、サブフォルダーを含める=オフ、出力変数=Files。パスやフィルターには引用符を付けません。

  4. 4

    詳細設定:並べ替えはなし。表の記載順は取得順を保証しません。サブフォルダーへのアクセス拒否時に失敗する設定は既定のオンを保ちます。

  5. 5

    「新しいリストの作成」:出力名をFileNameListにします。For eachの前に置き、先頭から実行するたびに空の一覧を作ります。

  6. 6

    For each:反復処理する値=%Files%、現在の項目=CurrentFile。内側の「項目をリストに追加」で追加する項目=%CurrentFile.Name%、追加先リスト=%FileNameList%にします。

  7. 7

    For eachのEndの後へ「メッセージを表示」を置き、本文を「一覧の件数:%FileNameList.Count%」にします。OKボタン、自動的に閉じる=オフ。初回は2件を確認してOKを押し、終了後の変数ペインでFileNameListを開き、見積.xlsxと報告.pdfの2項目を照合します。

  8. 8

    比較練習:フィルターだけを*.xlsxに変えて先頭から実行すると1件。次にサブフォルダーを含めるをオンにすると2件で、見積.xlsxが2項目になります。別の場所の同名ファイルです。完全なパスを見たい場合は追加する項目を%CurrentFile.FullName%に変えて、先頭から実行し直します。

  9. 9

    0件の確認:サブフォルダーを含めるをオフ、フィルターを*.csvにして先頭から実行します。Filesが空なのでFor eachの内側は0回、FileNameListも空のまま、End後に一覧の件数:0を表示します。練習後は*とオフ、追加項目Nameへ戻します。

Microsoft公式ページで確認する

設定を確認できる公式資料