构建宏以将网站上的数据下载到Excel中

时间:2015-08-23 14:10:10

标签: excel vba excel-vba excel-2013

我想在Excel中使用VBA构建一个宏来从以下网站下载历史数据:

http://quickstats.nass.usda.gov/results/320F1D82-1064-30F1-809E-F77E509EC508

我首先像往常一样创建一个命令按钮。然后我认为这可以使用宏录制器轻松解决。但是,当我选择数据 - >获取外部数据 - >从Web然后输入上面的地址我无法选择整个表作为数据。

所以,我不确定如何执行此任务,但我觉得可能有某些标准代码,我无法找到,以完成任务。

我觉得这项任务对很多人都有用,因为从网站下载数据的脚本可以在各种地方使用。

2 个答案:

答案 0 :(得分:5)

您可以尝试从"打印"下载表格,而不是尝试下载动态表格。而是表的版本。可打印表的URL是;

  

Blockquote http://quickstats.nass.usda.gov/results/320F1D82-1064-30F1-809E-F77E509EC508

和VBA;

mongo:
  image: mongo
  ports:
   - 27017:27017
  volumes:
   - $HOME/Desktop/development/mongo/data/:/mnt/sda1/data/db/
   - $HOME/Desktop/mongo/config/mongod.conf:/etc/mongod.conf.orig
  command: mongod --smallfiles

我可以用宏下载表格。

答案 1 :(得分:3)

有很多方法可以使用VBA从网站获取数据。您可以使用InternetExplorer对象导航到它,并在您到达后解析HTML。您还可以使用MSXML2.XMLHTTP制作HTTP请求。特别是Excel有许多可以做到这一点的数据链接选项。

但是,在这里,我会使用UDSA为您提供的工具,并在一行中完成:

Workbooks.Open ("http://quickstats.nass.usda.gov/data/spreadsheet/4C43034A-0EAA-3171-B4FC-84CC95FC6E0C.csv")

编辑:回应下面Sandstone的问题,这里有一些代码可以将该工作簿中的数据复制到现有工作簿中。

Dim thisWb, downloadWb As Workbook
Set thisWb = ActiveWorkbook

Set downloadWb = Workbooks.Open("http://quickstats.nass.usda.gov/data/spreadsheet/4C43034A-0EAA-3171-B4FC-84CC95FC6E0C.csv")

downloadWb.Worksheets(1).Range("A1:U2613").Copy Destination:=thisWb.Worksheets(1).Range("A2")

downloadWb.Close

当然,您需要更改范围等,以匹配您需要的数据。