パワークエリ(Power Query)の「フォルダーから」コマンドのアイキャッチ画像
AさんAさん

パワークエリでフォルダー内にある複数のブックやファイルを対象に整形したいですが、何のコマンドでデータを取得すれば良いですか?

森田森田

その場合、「フォルダーから」コマンドでデータ取得できますよ!
では、詳細を解説していきますね。

解説動画

この記事の内容は下記の動画「【パワークエリ#5】フォルダーを対象としたデータインポート手順 – フォルダー内の複数データ(シート/テーブル)を自動で一括取得する」でも解説しています。

コメント欄の目次の時間部分をクリックすると該当の解説へジャンプできますよ!

はじめに

この記事はパワークエリの概要を把握していることが前提です。

参考記事

パワークエリの概要は以下の記事をご参照ください。

「フォルダーから」コマンドとは、フォルダー内の複数ブック・ファイルのデータを一括取得する機能

「フォルダーから」コマンドは、クエリの新規作成ステップのうち、Step1の「データソースを取得/収集(Extract)」に該当する機能です。

クエリの新規作成ステップ(【Step1】データソースを取得/収集)

フォルダー内の複数のブックまたはファイルを対象にクエリを記録したい場合に、「フォルダーから」コマンドを使いましょう。

「フォルダーから」コマンドの使いどころ

「フォルダーから」コマンドを活用することで、Power Queryエディターを起動し、フォルダー内の複数のブックまたはファイルをクエリのデータソースとして一括取得できます。

なお、不要な整形作業を防ぐためにも、事前にフォルダーへ格納するファイルの種類を統一し、各ブック・ファイルの表データを同じレイアウトにしておくことがおすすめです。
頻出のファイル種類は、ExcelブックとCSVファイルの2種類。

一例として、「フォルダーから」コマンドを使い、「社員マスタ」フォルダー(「社員マスタ_2019.xlsx」・「社員マスタ_2020.xlsx」)のデータを取得したイメージが以下です。

「フォルダーから」コマンドの使用イメージ

この通り、Power Queryエディター上で複数ブックのテーブルの表データを一括取得できました。
「フォルダーから」コマンドで表データを取得した場合、デフォルトのクエリ名はフォルダー名になる(「社員マスタ」フォルダーの場合は「社員マスタ」等)。

後は、クエリ新規作成ステップのStep 2とStep 3を行いましょう。

これにより、データソースにしたフォルダーの更新があっても、クエリに記録したステップを自動化できます。

クエリの新規作成ステップのStep 2に役立つ各種コマンドや、Step 3の手順の詳細を知りたい方は、パワークエリの概要記事をご参照ください。
【Excel】パワークエリ(Power Query)とは?できることや使い方入門【動画あり】

「フォルダーから」コマンドの使用手順①(Excelブック)

「フォルダーから」コマンドで指定するフォルダー配下がExcelブックの場合は、以下の手順です。

「フォルダーから」コマンドの使用手順(Excelブック)[1/2]

「フォルダーから」コマンドの使用手順(Excelブック)[2/2]

  1. リボン「データ」タブをクリック
  2. 「データの取得」をクリック
  3. 「ファイルから」をクリック
  4. 「フォルダーから」をクリック
  5. データソースにしたいフォルダーを選択
    ※今回は「社員マスタ」フォルダー
  6. 「開く」をクリック
  7. 対象のブックが正しく認識されているか確認
  8. 「結合」をクリック
  9. 「データの結合と変換」をクリック
  10. 「パラメーターN」を選択
    ※今回は「パラメーター1」
  11. 「OK」をクリック
  12. 取得したいテーブル/シートが表示されるフィルター条件を設定
    ※今回は「Kind」列の「Table」のみチェックON(「Table」に等しい)
  13. 「Data」列を選択
  14. 選択列上で右クリック
  15. 「他の列の削除」をクリック
  16. 「展開」ボタンをクリック
  17. 展開したい列をチェックON
    ※今回はすべての列のチェックON
  18. 「元の列名をプレフィックスとして使用します」のチェックOFF
  19. 「OK」をクリック

手順⑥は、手順⑤のフォルダー名をダブルクリックでもOK。
手順⑩⑪の「ファイルの結合」ダイアログの見方は、「Excelブックから」コマンドのナビゲーター画面とほぼ同じ(詳細は「Excelブックから」コマンドの記事を参照)。
手順⑫は、指定ブック内にテーブルがある場合、同じ表でテーブル名とシート名の両方で表示されるが、基本的にはテーブル名の方を選択することがおすすめ(詳細は「Excelブックから」コマンドの記事を参照)。
手順⑬は、「Data」列以外に残したい列があれば、その列も選択すること。
手順⑱でチェックONにした場合、列名の頭に「Data.」が付加されてしまう(例:「Data.社員番号」等)。

【参考】クエリ作成時に自動生成される「ヘルパークエリ」とは、フォルダー内のファイル情報を取得するためのもの

「フォルダーから」のコマンドでクエリを作成すると、ヘルパークエリが自動生成されます。

ヘルパークエリのイメージ

ヘルパークエリは、フォルダー内のファイル情報を取得するためのものですが、予備知識程度に知っておいてください。

「クエリと接続」ウィンドウ上のフォルダーアイコンは「グループ」です。
上記の例では、「社員マスタからファイルを変換する」グループ。

複数のクエリ等を管理する際に役立ちます。

【注意】「フォルダーから」コマンドの使用時、データソースのフォルダー内のブックは開かないこと

「フォルダーから」コマンドの注意点として、前述のデータ取得手順を実行する際、手順⑤で指定するフォルダー内のExcelブックは閉じておきましょう。

もし、該当のExcelブックを開いた状態でデータ取得手順を実行した場合、Power Queryエディター上で該当ブックのレコードが「Error」となるか、手順⑨以降に「ファイルの結合」ダイアログが起動せず、手順⑦~⑨のダイアログへループしてしまいます。

Power Queryエディターが起動した場合、「Error」のセルを選択すると、次のエラーメッセージが表示されます。

「フォルダーから」コマンドの使用時、データソースのフォルダー内のブックを開いた場合のエラーメッセージ

‘ファイルの変換’ クエリでエラーが発生しました。DataSource.Error: 別のプロセスで使用されているため、プロセスはファイル ‘フォルダーパス\ブック名’ にアクセスできません。
詳細:
フォルダーパス\ブック名

いずれの場合も対処法は以下の通りです。

  • 自分が該当ブックを開いている場合:
    上記エラーメッセージの「キャンセル」ボタン押下→該当ブックを閉じる→再度データ取得手順をやり直し
  • 第三者が該当ブックを開いている場合(共有フォルダー配下等):
    第三者に該当ブックを閉じてもらう→上記エラーメッセージの「再試行」ボタン押下

自分が該当ブックを開いている場合、Power Queryエディターを開いた状態で該当ブックを閉じることができない場合あり。

「フォルダーから」コマンドの使用手順②(CSVファイル)

「フォルダーから」コマンドで指定するフォルダー配下がCSVファイルの場合は、以下の手順です。

「フォルダーから」コマンドの使用手順(CSVファイル)[1/2]

「フォルダーから」コマンドの使用手順(CSVファイル)[2/2]

  1. リボン「データ」タブをクリック
  2. 「データの取得」をクリック
  3. 「ファイルから」をクリック
  4. 「フォルダーから」をクリック
  5. データソースにしたいフォルダーを選択
    ※今回は「社員マスタ」フォルダー
  6. 「開く」をクリック
  7. 対象のファイルが正しく認識されているか確認
  8. 「結合」をクリック
  9. 「データの結合と変換」をクリック
  10. 取得データが正しく認識されているか確認
  11. 「OK」をクリック

手順⑥は、手順⑤のフォルダー名をダブルクリックでもOK。
手順⑩は、デフォルトで表示される「最初のファイル」のみ確認し、問題なければ次の手順へ進むこと(すべてのファイルの確認は現実的ではなく、取得後のデータで確認した方が早いため)。
手順⑩⑪の「ファイルの結合」ダイアログの見方は、「テキストまたはCSVから」コマンドのプレビュー画面とほぼ同じ(詳細は「テキストまたはCSVから」コマンドの記事を参照)。
手順⑪まで完了後、先頭列(「Source.Name」列)にCSVファイル名が追加されるが、不要な場合は削除すること。

クエリ作成後、データソースに指定したフォルダーパスの変更手順

「フォルダーから」コマンドで取得したデータソースの対象となるフォルダーパスを後から変更した場合、クエリ更新時に以下のエラーメッセージが表示されます。

クエリ作成後にデータソースに指定したフォルダーパスを変更した場合のエラーメッセージ

[DataSauce.NotFound] File or Folder: フォルダー ‘フォルダーパス’が見つかりませんでした。

この場合、以下の手順でクエリの「ソース」ステップを編集すればエラーは解消します。

なお、「フォルダーから」コマンドの場合、「ヘルパークエリ」グループ内の「サンプルファイル」クエリの「ソース」ステップも併せて編集しないと変更が反映されないことがあるため、セットで編集してください。

「ソース」ステップのフォルダーパスの変更手順

  1. 「ソース」ステップの歯車マークをクリック
  2. フォルダーパスを更新
  3. 「OK」をクリック

手順①~③は「ソース」ステップの数式バー上のフォルダーパスを直接編集し、「Enter」キーで確定してもOK。

手順③まで終えるとPower Queryエディターのプレビューウィンドウが更新されるため、無事にデータソースに指定した表データが再度取得されたかを確認しましょう。

クエリの編集方法の詳細は、以下の記事をご参照ください。
【パワークエリ】作成したクエリの編集・削除・各種設定変更ができる「クエリと接続」ウィンドウの使い方

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_PowerQueryデータ取得_フォルダーから.zip

※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

ブックを開いたら、次の手順(フォルダー内のファイル種類がExcelブック)を実施してください(今までの解説のまとめです)。

  1. リボン「データ」タブをクリック
  2. 「データの取得」をクリック
  3. 「ファイルから」をクリック
  4. 「フォルダーから」をクリック
  5. データソースにしたいフォルダーを選択
    ※今回は「社員マスタ」フォルダー
  6. 「開く」をクリック
  7. 対象のブックが正しく認識されているか確認
  8. 「結合」をクリック
  9. 「データの結合と変換」をクリック
  10. 「パラメーターN」を選択
    ※今回は「パラメーター1」
  11. 「OK」をクリック
  12. 取得したいテーブル/シートが表示されるフィルター条件を設定
    ※今回は「Kind」列の「Table」のみチェックON(「Table」に等しい)
  13. 「Data」列を選択
  14. 選択列上で右クリック
  15. 「他の列の削除」をクリック
  16. 「展開」ボタンをクリック
  17. 展開したい列をチェックON
    ※今回はすべての列のチェックON
  18. 「元の列名をプレフィックスとして使用します」のチェックOFF
  19. 「OK」をクリック

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

「フォルダーから」コマンドは、フォルダー内の複数のブックまたはファイルをクエリのデータソースとして一括取得できます。

別システムからエクスポートしたデータを特定のフォルダーへ蓄積し、Excelで集計/分析したいといったケースに役立ち、実務で活用する機会も多いため、ぜひ覚えておきましょう!

なお、パワークエリの各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。


ご参考になれば幸いですm(_ _)m

森田森田

「フォルダーから」コマンドに慣れたら、他の種類のデータソース取得に役立つコマンドを覚えましょう。
まず覚えるべきは、実務での利用頻度が高い「テーブルまたは範囲から」「テキストまたはCSVから」「Excelブックから」コマンドです。
表データの更新場所に応じて、各コマンドを使い分けできると、自動化の範囲を広げることができますよ!