[英]Macro to loop through multiple excel files and download data from each
[英]Building a Macro to Download Data off a Website into Excel
我想使用VBA在Excel中構建宏,以從以下網站下載歷史數據:
http://quickstats.nass.usda.gov/results/320F1D82-1064-30F1-809E-F77E509EC508
我首先像往常一樣創建一個命令按鈕。 然后,我認為使用宏記錄器可以輕松解決此問題。 但是,當我選擇數據->獲取外部數據->從Web,然后鍵入上面的地址時,我無法選擇整個表作為數據。
因此,我不確定如何執行此任務,但是我覺得可能有一些標准代碼無法完成以完成任務。
我覺得這項工作對許多人都有用,因為從網站上下載數據的腳本可以在許多地方使用。
您可以嘗試從表格的“可打印”版本下載表格,而不是嘗試下載動態表格。 可打印表格的網址為;
塊引用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"))
我可以下載帶有宏的表格。
有很多方法可以使用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
當然,您需要更改范圍等以匹配所需的數據。
這是因為看起來像表的實際上是一堆很多單行表,這些表是動態生成的(向下滾動時可以看到),並隱藏在> = 8層<div>
。
使用例如Firefox和“檢查元素”來查看頁面結構。
因此,此頁面是您要執行的任務的特別糟糕的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.