构build一个macros,将数据从网站下载到Excel中

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

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

我像往常一样先创build一个命令button。 然后我认为这可能可以使用macroslogging器轻松解决。 但是,当我select数据 – >获取外部数据 – >从Web,然后键入上述地址,我无法作为一个整体的数据select表。

所以,我不确定如何做这个任务,否则我觉得可能有一些标准的代码,我一直无法find,以完成任务。

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

使用VBA从网站获取数据有很多种方法。 您可以使用InternetExplorer对象导航到该对象,并在您到达之后parsingHTML。 您还可以使用MSXML2.XMLHTTP制作HTTP请求。 Excel尤其有一些数据链接选项可以做到这一点。

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

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

编辑:为了响应下面的砂岩的问题,这里有一些代码将数据从该工作簿复制到现有的。

 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 

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

而不是尝试下载一个dynamic表格,你可以尝试下载表格的“可打印”版本。 可打印表格的URL是;

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

和VBA;

 With ActiveSheet.QueryTables.Add(Connection:= _ "URL;http://quickstats.nass.usda.gov/data/printable/4C43034A-0EAA-3171-B4FC-84CC95FC6E0C" _ , Destination:=Range("$F$10")) 

我可以用macros下载表格。

这是因为看上去像一个表格实际上是一堆大量的单行表格,它们是dynamic生成的(你可以看到,当你向下滚动时),埋在> = 8级的<div>

使用Firefox和“检查元素”来查看页面结构。

所以这个页面是你想做的任务的一个特别糟糕的例子。