【问题标题】:Excel Web QueryExcel 网页查询
【发布时间】:2020-11-21 09:20:00
【问题描述】:

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

通过这样做,我注意到 excel 网络查询做了一些奇怪的事情(显然对我来说)。从数据源中,它通过硬编码日期对列标题进行转换。如果标题是静态的,这将不是问题,但考虑到它们会更改,如果我保留代码原样,这将是一个问题。

我想知道是否有一种方法可以在 VBA 中概括 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"""

【问题讨论】:

    标签: excel vba excel-web-query


    【解决方案1】:

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

    例如:

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

    【讨论】:

    • 感谢您的意见。虽然我不是 VBA 专家,尤其是 PowerQuery(因此我记录了宏),但我确定将您建议的代码粘贴在哪里或如何修改我发布的代码。你能帮助更多的投入吗?谢谢,我非常感谢@RonRosenfeld
    • @Marco_sbt 根据您发布的内容(我相信您已经注意到,包含所有非打印字符很难阅读),我猜您会用我的代码中的行替换您的 #"Changed Type" 行。您是在 VBA 中还是在 Power Query 编辑器中执行此操作取决于您从哪里获得这些行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多