看板 Accounting 關於我們 聯絡資訊
【Excel VBA網路爬蟲】整理好央行網址儲存格清單,InputBox方法取得金融資訊 網誌圖文版: https://www.b88104069.com/archives/4499 上一節介紹InputBox函數網路爬蟲,執行巨集時可能要開瀏覽器網頁複製網址,本節進一 步InputBox方法,先在Excel整理好網址表格清單,引用儲存格參照取得網頁資料。 一、央行金融指標: 希望一次取得中央銀行三個金融指標的資料,分別下載到三個工作表。 二、VBA工作表屬性: 進入VBA編輯環境,在左邊的專案視窗中,「Microsoft Excel物件」資料夾選擇「工作表 2(平均存款利率)」。如圖可以清楚看到,在VBA裡面工作表有兩個不同代號,例如在活頁 簿上的標籤名稱是「平均存款利率」、在VBA裡則是「工作表2」,而且參考上一個步驟的 擷圖,可以瞭解活頁簿上工作表次序,和實際Excel系統裡的名稱順序不一樣。以範例來 說,其實有個工作表1被刪除,然後是「工作表4(彙總)」移到最前面了。如此瞭解Excel 的工作表架構(程式語言的專業術語為物件模型),是進一步編寫VBA程式碼的基礎。 三、InputBox函數限制 首先如果沿續上一節的InputBox函數,會發現只要,將游標移到對話方塊外,馬上變成一 顆轉個不停的藍色小球,因為InputBox函數只能直接輸入文字,若是想直接引用儲存格參 照,必須改用InputBox方法。(VBA程式碼的基本結構之一:「物件.方法」,代表對某個 Excel物件執行某個指令方法)。 四、改用InputBox方法 修改VBA程式碼如圖所示,綠色部份是將上一節原來的代碼,以單引號轉換成單純文字( 非程式碼),藍底白字是主要更改的程式碼,由InputBox函數改為InputBox方法。「 WebAress1 = Application.InputBox("請選擇網頁網址所在儲存格", "匯入網址", Type:=8)」這是InputBox方法的標準結構,和InputBox函數比起來,多了一個「Type:=8 」,表示輸入類型為儲存格參照。「DesCell = Application.InputBox("請選擇資料開始 儲存格", "匯入目的", Type:=8).Address」這一行程式碼和上一行非常接近,只是最後 多加了一個「.Address」,關於這個有兩點說明: 第一點,如前所述,「物件.方法」是VBA程式碼的基本結構之一,相類似的是「物件.屬 性」,於此是將所輸入的儲存格作為物件,以「.Address」傳回其VBA語言形式的範圍參 照。 第二點,「WebAress1 = Application.InputBox」會將「WebAress1」設定為儲存格的值 ,也就是網址,「DesCell = Application.InputBox.Address」會將「DesCell」設定為 儲存格本身(儲存格物件),對比接著後面的「WebAress2 = "URL;" & WebAress1」、「 Destination:=Range(DesCell))」,應該較容易理解兩個之間的差異。 五、參照引用網址 於想要執行程式的工作表,例如先移到「平均存款利率」工作表,執行巨集,跳出「匯入 網址」對話方塊,選擇「彙總」工作表的「C2」儲存格,就是央行平均存款利率的網址, 在對話方塊立即出現「彙總!$C$2」。 六、匯入目的儲存格 接著出現「匯入目的」對話方塊,選擇「平均存款利率」工作表的「A1」儲存格,在對話 方塊立即出現「$A$1」。 七、網址清單取得網頁資料 成功匯入網頁內容,以相同方法取得三個工作表資料。 最後再補充提醒,由於這裡範例程式碼為「With ActiveSheet.QueryTables.Add」,「 ActiveSheet」意思是目前現用工作表,所以假設想將資料匯入「平均存款利率」工作表 ,必須在執行巨集之前,必須在「平均存款利率」工作表選取任何一個儲存格,如此現用 工作表便會是「平均存款利率」工作表。如果希望更巨集聰明一點,直接將資料匯入任何 指定的工作表,程式碼會稍為複雜一點,於此暫不介紹。 延伸閱讀: Excel VBA網路爬蟲,InputBox函數開啟對話方塊,輸入中央銀行網址取得利率 https://www.b88104069.com/archives/4485 Excel VBA巨集也能匯出匯入,輕鬆備份共享,完整說明VBA網路爬蟲程式 https://www.b88104069.com/archives/4467 Excel巨集抓取網頁資料出錯了!進入VBA簡單修改,開始成為程式設計師 https://www.b88104069.com/archives/4432 -- 周末,我們繼續Excel:精華區=>21.心得=>5.其他=>3.office 會計人的Excel小教室: https://www.facebook.com/acctexcel -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.22.232.64 (中國) ※ 文章網址: https://www.ptt.cc/bbs/Accounting/M.1589205693.A.98E.html