shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Query】現在のExcelファイルのシートを直接取得する関数はない

Power Queryで、現在のExcelファイルのシートの内容を取得したい時があります。

しかし、テーブル等を介さず、直接取得する関数はありませんでした。

なお、使用のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2309)です。

 Excel ブックの内容を返す関数には

  • Excel.CurrentWorkbook
    現在の Excel ブックの内容を返す。シート内容の取得不可
  • Excel.Workbook
    (指定したExcel ブックの内容を返す。シート内容の取得可能)

があります。

まず、現在の Excel ブックの内容を返すExcel.CurrentWorkbookは、テーブル、名前付き範囲、動的配列を返します。しかし、 Excel.Workbook とは異なり、シートは返さないという仕様です。

learn.microsoft.com

それで、Excel.Workbookで取得しようと、現在のExcelファイルを

= Excel.Workbook(File.Contents("フルパス"), null, true)

でフルパスを指定して取得を試みてみました。

結果は、現在のExcelファイルと同じ場合は次のとおり「別のプロセスで使用されているため、プロセスはファイル”〇〇”にアクセスできません。」のエラーが発生。

Excel.Workbookはクエリを作成するファイルと別でないとエラーになるようです。

別のプロセスで使用されているため、プロセスはファイル「〇〇」にアクセスできません。

エラー画面例

参考情報:

learn.microsoft.com

以上、Power Queryで現在のExcelファイルのシートをテーブル等を介さずに直接取得する関数はない、という備忘録でした。