Power Queryで、現在のExcelファイルのシートの内容を取得したい時があります。
しかし、テーブル等を介さず、直接取得する関数はありませんでした。
なお、使用のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2309)です。
Excel ブックの内容を返す関数には
- Excel.CurrentWorkbook
(現在の Excel ブックの内容を返す。シート内容の取得不可) - Excel.Workbook
(指定したExcel ブックの内容を返す。シート内容の取得可能)
があります。
まず、現在の Excel ブックの内容を返すExcel.CurrentWorkbookは、テーブル、名前付き範囲、動的配列を返します。しかし、 Excel.Workbook とは異なり、シートは返さないという仕様です。
それで、Excel.Workbookで取得しようと、現在のExcelファイルを
= Excel.Workbook(File.Contents("フルパス"), null, true)
でフルパスを指定して取得を試みてみました。
結果は、現在のExcelファイルと同じ場合は次のとおり「別のプロセスで使用されているため、プロセスはファイル”〇〇”にアクセスできません。」のエラーが発生。
Excel.Workbookはクエリを作成するファイルと別でないとエラーになるようです。
参考情報:
以上、Power Queryで現在のExcelファイルのシートをテーブル等を介さずに直接取得する関数はない、という備忘録でした。