构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和“检查元素”来查看页面结构。
所以这个页面是你想做的任务的一个特别糟糕的例子。