如何在 VBA PowerQuery 中添加动态变量
Posted
技术标签:
【中文标题】如何在 VBA PowerQuery 中添加动态变量【英文标题】:How to add Dynamic Variable in VBA PowerQuery 【发布时间】:2021-02-03 16:57:52 【问题描述】:我正在通过电源查询将 Excel 工作簿连接到 VBA 宏。宏应选择用户目录中与文件名上正确日期匹配的文件。
路径应该先由变量生成:
f = ThisWorkbook.Path & "\Data\details_" & Month([Date].Value) & "." & Day([Date].Value) & ".xlsx"
然后,应该将变量放入 PowerQuery 中:
ActiveWorkbook.Queries.Add Name:="PortalData", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Excel.Workbook(File.Contents(f), null, true)," & Chr(13) & "" & Chr(10) & " Table1_Table = Source[Item=""Table1"",Kind=""Table""][Data]," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(Table1_Table,...)" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
File.Contents(f) 搜索名为“f
”的文件而不是路径。 File.Contents()
最初包含双引号中的路径,但将双引号添加到 f 不起作用。
【问题讨论】:
你需要与&
连接。
@BigBen 我将它添加为 File.Contents(""&f&"") 但我收到有效绝对路径详细信息的错误 &f&
第一步。 Debug.Print
您的连接字符串并在即时窗口中检查。
@BigBen 好的,所以运行 Debug.Print f = path 显示为 True。 Debug.Print 路径显示 C:\Users\XXXXX\Downloads\V3.3 Automated Review File 1.28\Folder1\Portal Data\details_2.3.xlsx\ –
我想我的意思是Debug.Print
在Formula:= _
之后的所有内容,即实际的M 查询,而不仅仅是路径部分。
【参考方案1】:
解决方案是替换:
File.Contents(""&f&"")
与
File.Contents(""" & f & """)
感谢@BigBen 的帮助!
【讨论】:
以上是关于如何在 VBA PowerQuery 中添加动态变量的主要内容,如果未能解决你的问题,请参考以下文章
如何像 Power Query 一样使用 VBA 取消固定数量的列