繁体   English   中英

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

[英]Get Current Workbook Path - Excel Power Query

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

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

在 VBA 中,这只是 WorkbookObject Path 属性。 但随着权力的质疑,它又是另一回事了。 Microsoft 站点上的参考和库仅限于电源查询。

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

您可以使用以下仅涉及使用 Excel 公式的方法,而不是使用 VBA:

  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/mp/206150

在 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM