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

パワークエリで別ブックのテーブルやシートを対象に整形したいですが、何のコマンドでデータを取得すれば良いですか?

森田森田

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

解説動画

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

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

はじめに

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

参考記事

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

「Excelブックから」コマンドとは、別ブックのテーブルやシートのデータを取得する機能

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

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

単一の別ブックのテーブルまたはシートを対象にクエリを記録したい場合に、「Excelブックから」コマンドを使いましょう。

「Excelブックから」コマンドの使いどころ

「Excelブックから」コマンドを活用することで、Power Queryエディターを起動し、単一の別ブックのテーブルまたはシートをクエリのデータソースとして取得できます。

一例として、「Excelブックから」コマンドを使い、「商品マスタ.xlsx」の「商品マスタ1」テーブルのデータを取得したイメージが以下です。

「Excelブックから」コマンドの使用イメージ(単一のテーブル・シート)

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

なお、単一の表データ以外にも、別ブックの複数の表データを一括で取得することも可能です。

複数の表データの取得を自動化するには、従来はマクロ(VBA)が必須でしたが、パワークエリならクリック操作メインで簡単に自動化できるため、ぜひ活用しましょう。

一例として、「Excelブックから」コマンドを使い、「社員マスタ.xlsx」の「社員マスタ_2019」テーブルと「社員マスタ_2020」テーブルの2つのデータを取得したイメージが以下です。

「Excelブックから」コマンドの使用イメージ(複数のテーブル・シート)

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

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

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

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

「Excelブックから」コマンドの使用手順①(単一のテーブル・シート)

「Excelブックから」コマンドで単一のテーブルやシートを対象にデータ取得する場合は、以下の手順です。

「Excelブックから」コマンドの使用手順(単一のテーブル・シート)

  1. リボン「データ」タブをクリック
  2. 「データの取得」をクリック
  3. 「ファイルから」をクリック
  4. 「Excelブックから」をクリック
  5. データソースにしたいExcelブックを選択
    ※今回は「商品マスタ.xlsx」
  6. 「インポート」をクリック
  7. データソースにしたいテーブルまたはシートを選択
    ※今回は「商品マスタ1」テーブル
  8. 取得データが正しく認識されているか確認
  9. 「データの変換」をクリック

手順④は、手順③のブック名をダブルクリックでもOK。
手順⑦は、指定ブック内にテーブルがある場合、同じ表でテーブル名とシート名の両方で表示されるが、基本的にはテーブル名の方を選択することがおすすめ(詳細は後述)。

【参考】「ナビゲーター」ダイアログのテーブル名・シート名の見分け方

「ナビゲーター」ダイアログ上でのテーブル名とシート名の見分け方は、アイコンの形で判断しましょう。

「ナビゲーター」ダイアログのテーブル名・シート名の見分け方

  • テーブル:アイコンの上部に色が付いているもの
  • シート:アイコンの下部にタブがあるもの

フォルダーのアイコンはブック全体を示す。

なお、シート上の表データをテーブル化している場合、「ナビゲーター」ダイアログ上で同一データでもテーブル名とシート名の両方で表示されますが、テーブル名の方を選択することをおすすめします。

理由は、シート名の方だと、レコードの下側の空白行まで一緒にデータ取得してしまい、Power Queryエディター上で余計な空白行を削除するといった余計な一手間が発生する場合があるからです。

もちろん、指定ブック内にテーブルが存在しない場合は、シート名だけが表示されるため、その場合はシート名を選択しましょう。

ちなみに、今回の「商品マスタ」のように、テーブル名とシート名が同じ場合、名前の重複を避けるために、「ナビゲーター」ダイアログ上ではテーブル名の方に数値が付加される仕様です。
例:「商品マスタ1」。

「Excelブックから」コマンドの使用手順②(複数のテーブル・シート)

「Excelブックから」コマンドで複数のテーブルやシートを対象にデータ取得する場合は、以下の手順です。

「Excelブックから」コマンドの使用手順(複数のテーブル・シート)[1/2]

「Excelブックから」コマンドの使用手順(複数のテーブル・シート)[2/2]

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

手順⑥は、手順⑤のブック名をダブルクリックでもOK。
手順⑨は、指定ブック内にテーブルがある場合、同じ表でテーブル名とシート名の両方で表示されるが、基本的にはテーブル名の方を選択することがおすすめ。
手順⑩は、「Data」列以外に残したい列があれば、その列も選択すること。
手順⑮でチェックONにした場合、列名の頭に「Data.」が付加されてしまう(例:「Data.社員番号」等)。

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

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

もし、該当のExcelブックを開いた状態でデータ取得手順を実行した場合、以下のエラーメッセージが表示され、Power Queryエディターを起動できません。

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

接続できません
接続しようとしているときにエラーが発生しました。
詳細:”別のプロセスで使用されているため、プロセスはファイル’フォルダーパス\ブック名’にアクセスできません。”

このエラーメッセージが表示された場合の対処法は以下の通りです。

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

自分が該当ブックを開いている場合、エラーメッセージ表示中の状態で該当ブックを閉じることができない場合あり。

クエリ作成後、データソースに指定したExcelブックの変更手順

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

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

[DataSauce.NotFound] File or Folder: ファイル’フォルダーパス\ブック名’が見つかりませんでした。

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

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

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

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

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

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

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

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

サンプルファイル_PowerQueryデータ取得_ブックから.zip

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

ブックを開いたら、次の手順を実施してください(今までの解説のまとめです)。

  1. リボン「データ」タブをクリック
  2. 「データの取得」をクリック
  3. 「ファイルから」をクリック
  4. 「Excelブックから」をクリック
  5. データソースにしたいExcelブックを選択
    ※今回は「商品マスタ.xlsx」
  6. 「インポート」をクリック
  7. データソースにしたいテーブルまたはシートを選択
    ※今回は「商品マスタ1」テーブル
  8. 取得データが正しく認識されているか確認
  9. 「データの変換」をクリック

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

なお、複数テーブル・シートの取得を練習したい場合は、以下のサンプルファイルをご活用ください(複数テーブル・シートの場合の手順を参照)。

サンプルファイル_PowerQueryデータ取得_ブックから(複数).zip

さいごに

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

「Excelブックから」コマンドは、単一の別ブックのテーブルまたはシートをクエリのデータソースとして取得できます。

別ファイルをクエリのデータソースにする場合の基本コマンドの1つであるとともに、別ブックの複数の表データを取得するテクニックは実務で役立つため、ぜひ覚えておきましょう!

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


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

森田森田

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