如何在 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 中添加动态变量的主要内容,如果未能解决你的问题,请参考以下文章

VBA 中的 Power Query 绝对路径问题

如何像 Power Query 一样使用 VBA 取消固定数量的列

如果未安装插件,Excel-VBA 会显示警告

如何使用 PowerQuery 中的高级编辑器设置动态开始日期和结束日期

如何利用PowerQuery合并文件下的文件

EXCEL VBA 里面如何动态获取字符串转换为变量名?