[算表] 【Excel VBA網路爬蟲】InputBox方法

作者: moodyblue   2020-05-11 22:05:57
【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

Links booklink

Contact Us: admin [ a t ] ucptt.com