Excel Web查询

Excel Web查询,excel,vba,excel-web-query,Excel,Vba,Excel Web Query,我使用web查询工具在电子表格中导入一个表。考虑到我想多次查询该站点,我录制了一个宏,将web查询转换为VBA格式,然后在循环中使用它来下载我需要的表 通过这样做,我注意到ExcelWebQuery做了一些奇怪的事情(显然对我来说)。从数据源,它通过硬编码日期对列标题进行转换。如果头是静态的,这不会是一个问题,但是如果他们会改变,如果我保持代码不变,这将是一个问题 我想知道是否有一种方法可以在VBA中概括web查询所做的数据转换,以便正确导入数据和日期 您可以在下面找到web查询的代码 &quo

我使用web查询工具在电子表格中导入一个表。考虑到我想多次查询该站点,我录制了一个宏,将web查询转换为VBA格式,然后在循环中使用它来下载我需要的表

通过这样做,我注意到ExcelWebQuery做了一些奇怪的事情(显然对我来说)。从数据源,它通过硬编码日期对列标题进行转换。如果头是静态的,这不会是一个问题,但是如果他们会改变,如果我保持代码不变,这将是一个问题

我想知道是否有一种方法可以在VBA中概括web查询所做的数据转换,以便正确导入数据和日期

您可以在下面找到web查询的代码

"let" & Chr(13) & "" & Chr(10) & "    Source =
 Web.Page(Web.Contents(""https://fred.stlouisfed.org/release/tables?
rid=53&eid=783269#snid=783270""))," & Chr(13) & "" & Chr(10) & 
"    Data0 = Source{0}[Data]," & Chr(13) & "" & Chr(10) & 
"    #""Changed Type"" = Table.TransformColumnTypes(Data0,{{"""", type text},
 {""Q3 2020"", type number}, {""Q2 2020"", type number}, {""Q3 2019"", type
 number}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " 
   #""Changed Type"""

您可以确定当前列名,并自己创建转换列表

例如:


谢谢你的意见。虽然我不是VBA专家,尤其是在PowerQuery方面(因此我录制了宏),但我确信我会将您建议的代码粘贴到哪里,或者如何修改我发布的代码。你能再多帮点忙吗?谢谢,我真的很感激@RonRosenfeld@Marco_sbt根据您发布的内容(我相信您已经注意到,对于包含的所有非打印字符来说,这很难阅读),我猜您会用我代码中的行替换您的
#“Changed Type”
行。您是在VBA中还是在Power Query editor中执行此操作取决于这些行的来源。
colNames = Table.ColumnNames(Data0),
colTypes = {type text, type number, type number, type number},

    #"Changed Type" = Table.TransformColumnTypes(Data0,List.Zip({colNames,colTypes}))