webdevqa.jp.net

ローカルファイルへのクエリを含むExcelシートは他のマシンでは機能しません

Powerqueryを使用してローカルファイルからデータをプルするExcelシートを作成しました。シートは私の同僚のマシンでは機能しません。理由はわかりません。

それはこのように動作します:

  1. FilePathという名前のテーブルにローカルファイルへのパスを貼り付けます
  2. データタブの「すべて更新」をクリックします
  3. 接続GetFilePathは、次の式を使用してファイルパスを取得します。

    = (rangeName) => 
    Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]
    
  4. クエリは、そのファイルを次のソースを含むシートにロードします。

    = Csv.Document(File.Contents(GetFilePath("FilePath")),[Delimiter="#(tab)", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None])
    

同僚が取得するエラーは、明らかに手順3です。更新をクリックすると、このエラーが発生します。

[Expression.Error] We couldn't find an Excel table name 'FilePath'.

私のマシンと同じように、テーブルの名前がFilePathであることを確認しました。

私のマシンと同僚のマシンの違いに気付いたのは次のとおりです。

リボンの[データ]タブの[クエリと接続]セクションに、[クエリと接続]というボタンがあります。私の同僚の場合、同じボタンに「接続」と表示されます。

ボタンをクリックすると、[クエリと接続]サイドバーが表示されます。同僚が[接続]ボタンをクリックすると、サイドバーとはまったく異なるポップアップが表示されます。

Screenshot - Queries & Connections button

どんな入力でも大歓迎です。

2

これは、私がOffice 365用のExcelを持っていて、同僚がExcel2016を持っているという事実によるものと思われます。

2つのバージョンでは、カスタムテーブル名/セル参照の処理が異なるようです。これを修正するために変更したものは次のとおりです。

元の表現:

= (rangeName) => 
Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]

ここで、「FilePath」はカスタムテーブル名であり、「Column1」はデフォルトです(シートの実際の列名ではありません)。

固定式:

= (rangeName) => 
Excel.CurrentWorkbook(){[Name="Table3"]}[Content]{0}[File Path]

ここで、「Table3」はExcelがテーブルに付けたデフォルト名であり、「ファイルパス」はセルに実際に表示される列名です。

これらの変更を行った後、シートはExcel2016とExcel365の両方で機能するようになりました。

カスタムテーブル名がExcel2016を壊していた理由がよくわかりません。その名前でテーブルとして参照されているセルを認識していないようです。何がうまくいかなかったのかについて誰かが何か情報を持っているなら、私はそれを聞きたいです。

1