对本地文件进行查询的 Excel 表无法在其他机器上运行

对本地文件进行查询的 Excel 表无法在其他机器上运行

我创建了一个 Excel 工作表,使用 powerquery 从本地文件中提取数据。该工作表在我同事的机器上不起作用。我们不确定原因。

它的工作原理如下:

  1. 将路径粘贴到名为文件路径
  2. 单击数据选项卡中的“刷新全部”
  3. 建立联系获取文件路径使用以下表达式获取文件路径:

    = (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,与我的相同。

我注意到我的机器和我同事的机器之间的一个区别:

在功能区、数据选项卡、查询和连接部分中,我有一个按钮,上面写着“查询和连接”。对于我的同事,同一个按钮只显示“连接”。

当我点击按钮时,我得到了查询和连接侧边栏。当我的同事点击他们的连接按钮时,他们得到了一个与侧边栏看起来完全不同的弹出窗口。

屏幕截图 - 查询和连接按钮

任何意见都值得赞赏。

答案1

这显然是因为我拥有适用于 Office 365 的 Excel 而我的同事拥有 Excel 2016。

这两个版本处理自定义表格名称/单元格引用的方式似乎不同。以下是我为修复此问题所做的更改:

原文表达:

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

其中“FilePath”是自定义表名,“Column1”是某些默认值(不是表中的实际列名)。

固定表达:

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

其中“Table3”是 Excel 为表指定的默认名称,“文件路径”是单元格中实际显示的列名。

进行这些更改后,该工作表现在可以在 Excel 2016 和 Excel 365 中使用。

我不太明白为什么自定义表格名称会破坏 Excel 2016。它似乎没有将以该名称引用的单元格识别为表格。如果有人知道到底出了什么问题,我很乐意听听。

相关内容