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

时间:2017-05-25 17:17:46

标签: excel powerquery m

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

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

在VBA中

这只是WorkbookObject Path属性。但有权力查询它的另一个故事。 Microsoft网站上的参考和库仅限于电源查询。

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

3 个答案:

答案 0 :(得分:3)

在Power Query中没有直接的方法。如果您可以将值填入单元格,则可以通过Excel.CurrentWorkbook获得该值。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

代替使用VBA,可以使用以下方法,该方法仅涉及使用Excel公式:

  1. 在Excel中定义以下公式,并将此单元格命名为“ FilePath”:
=LEFT(CELL("filename",$A$1),FIND("[",CELL("filename",$A$1),1)-1)
  1. 在PowerQuery中添加以下功能。这将返回当前目录:
() =>
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