用Excel下载表格

时间:2015-01-08 03:14:12

标签: excel excel-vba import web-scraping vba

我想下载此页面中有关Libor费率的表格:

http://online.wsj.com/mdc/public/page/2_3020-libor.html(具体来说,是关于美元的那个)

通过使用来自网络的数据/导入,如果我按下导入后选择表格,则表格不会出现,但如果我导入整个页面则会显示该表格

有没有办法,使用VBA可能,我可以在哪里获得该表?

1 个答案:

答案 0 :(得分:1)

作为VBA的替代方案,您可以下载并安装名为Power Query的免费Microsoft Excel加载项。安装Power Query后,步骤为:

  • 单击Power Query功能区
  • 点击“来自网络”图标
  • 粘贴网站的网址
  • 在侧栏上,选择Table0并编辑查询
  • 您会看到已经应用了一些转换步骤。添加以下转换:
  • 删除顶行(仅1行)
  • 将第一行设为标题
  • 删除底行(27行)
  • 单击“关闭并加载”将转换后的数据写入Excel文件中的表。

现在,您只需要在网站有新号码时刷新数据连接。

屏幕截图包含带有Power Query功能区的Excel文件和背景中的结果表。顶部的窗口是Power Query界面。转换步骤列在右侧面板中。

enter image description here

每个转换步骤都以“M”语言记录。在Power Query中,您可以点击查看>高级编辑器,用于查看和更改M代码。它是一种非常强大的语言,其语法与Excel公式或VBA完全不同。我只是在这里提到它,让你意识到可以自定义转换,而不是单击功能区上的图标。生成的代码是:

let
    Source = Web.Page(Web.Contents("http://online.wsj.com/mdc/public/page/2_3020-libor.html")),
    Data0 = Source{0}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Data0,{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}}),
    #"Removed Top Rows" = Table.Skip(#"Changed Type",1),
    #"First Row as Header" = Table.PromoteHeaders(#"Removed Top Rows"),
    #"Removed Bottom Rows" = Table.RemoveLastN(#"First Row as Header",27)
in
    #"Removed Bottom Rows"