簡體   English   中英

構建宏以將網站上的數據下載到Excel中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM