获取当前工作簿路径 - Excel Power Query

Get Current Workbook Path - Excel Power Query

正在尝试添加自定义列并使用当前工作簿路径名填充值。

我已经尝试了 Excel.Workbook.name 和 Excel.CurrentWorkbook() 以及其他对象,但似乎它们仅限于提取数据。

在 VBA 中,这只是 WorkbookObject 路径 属性。但随着权力的查询,它是另一个故事。 Microsoft 站点上的参考资料和库仅限于电源查询。

https://msdn.microsoft.com/en-us/library/mt779182.aspx

在 Power Query 中没有直接的方法来执行此操作。如果您可以将值填充到单元格中,则可以通过 Excel.CurrentWorkbook.

获取该值

您可以使用 VBA 并在 Workbook_Open 事件期间打开文件时填充一个单元格:

Private Sub Workbook_Open()
Dim root As String

root = ActiveWorkbook.path

Range("root").Value = root
'root is the named range used in power query.
End Sub

然后,您可以按照以下方式将命名范围 ("root") 中的变量导入 Power Query:

let
    Source = Excel.CurrentWorkbook(){[Name="root"]}[Content][Column1]{0}
in
    Source

除了使用 VBA,您还可以使用以下仅涉及使用 Excel 公式的方法:

  1. 在 Excel 中定义以下公式并将此单元格命名为“FilePath”:
=LEFT(CELL("filename",$A),FIND("[",CELL("filename",$A),1)-1)
  1. 在 PowerQuery 中添加以下函数。这将 return 当前目录:
() =>
let
    CurrentDir = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]
in
    CurrentDir 
  1. 现在您可以从当前目录导入 CSV(或其他)文件:
let
    Source = Csv.Document(File.Contents(currentdir() & "filename.csv"),[Delimiter=";", Columns=15, Encoding=65001, QuoteStyle=QuoteStyle.None])
in
    Source

制作人员:https://techcommunity.microsoft.com/t5/excel/power-query-source-from-relative-paths/m-p/206150