Excel PowerQuery中的相对文件夹/文件路径(M)

Excel PowerQuery中的相对文件夹/文件路径(M),excel,powerquery,Excel,Powerquery,给定:位于同一文件夹中的2个excel文件(A和B) 任务:将工作簿B中给定PQ的源设置为以“相对”方式引用工作簿a——当两个文件都移动到另一台电脑时,引用不会中断 在M语言中是否有任何东西可以获取当前文件夹或文件路径?为excel单元格指定一个范围名称,如LocVariable,并在该单元格中放入一些文本或excel公式,以计算所需的文件路径,如c:\temp 然后在powerquery中,在home中。。。高级编辑器。。。编辑源语句以使用该路径 let Loc = Text.From(Exc

给定:位于同一文件夹中的2个excel文件(
A
B

任务:将工作簿
B
中给定PQ的源设置为以“相对”方式引用工作簿
a
——当两个文件都移动到另一台电脑时,引用不会中断


M语言中是否有任何东西可以获取当前文件夹或文件路径?

为excel单元格指定一个范围名称,如LocVariable,并在该单元格中放入一些文本或excel公式,以计算所需的文件路径,如c:\temp

然后在powerquery中,在home中。。。高级编辑器。。。编辑源语句以使用该路径

let Loc = Text.From(Excel.CurrentWorkbook(){[Name="LocVariable"]}[Content]{0}[Column1]),
Source = Excel.Workbook(File.Contents(Loc&"\data.xlsx"), null, true),
还是一步到位

let Source = Excel.Workbook(File.Contents(Text.From(Excel.CurrentWorkbook(){[Name="LocVariable"]}[Content]{0}[Column1])&"\data.xlsx"), null, true),

您需要为定义当前路径的某个单元格指定一个名称“Path”

=LEFT(CELL("filename");SEARCH("[";CELL("filename");1)-1)
然后在查询中使用以下命令:

Path = Excel.CurrentWorkbook(){[Name="Path"]}[Content]{0}[Column1],
FullPath = Path & "file.xlsx",
Source = Excel.Workbook(File.Contents(FullPath), null, true)
这种方法的一大缺点是,您需要在更改本地化后计算工作簿,或者将计算模式设置为自动


如果有人知道我们如何不使用单元格获取当前路径,它将解决修改文件和计算模式的问题。

Thx用于共享。这是一种常见的方法,我在互联网上看到许多文章建议这样做。不幸的是,它有几个缺点:源工作簿内容被修改,查询依赖于单元格。在自动化中,我可以复制用户的工作,但添加/修改单元格内容不是一个选项。如果是动态公式,你不必修改它,但不管怎样。祝你好运。这与上一个答案中的方法相同,但有更多关于如何设置名为“helper”的单元格的详细信息。关于
CalculationMode
如何影响此方法的详细介绍。尽管如此,我还是希望有一个没有前面提到的缺点的替代解决方案,如果它存在的话。如果您能为我澄清一下Excel中是否存在阻止PowerQuery访问M语言中当前文件位置的沙盒,我将不胜感激。