VBA QueryTables.Add是最基本爬蟲方式,也是Excel很好用的工具,它可以用錄製巨集的方法產生程式碼,本文以簡單範例介紹可能會有的問題,說明如何適當修改順利執行。
目錄
Toggle一、錄製巨集取得程式
原先程式碼是錄製巨集自動生成的,對於「QueryTables.Add」設置諸多屬性,雖然較為完整,但其實就文章範例而言,並不是全部需要,所以如圖所示,20個屬性裡面,只要保留3個,其他可以刪除,有興趣讀者可試看看,執行結果和上一節完全相同。在這裡為了方便參考及以後利用方便,沒有真的刪除,而是利用「使程式行變為註解」指令,在批次在前面加個單引號,所保留屬性中,有2個跟取得網頁的形式和內容有關,有1個跟背景執行有關,詳細說明可參考本章第一節介紹。

二、網頁格式代碼
將「.WebFormatting = xlWebFormattingNone」變為註解,表示不僅匯入網頁資料、同時也要匯入網頁格式。

三、網頁格式對比
再次執行程式,如圖所示,上面是單純匯入資料、未匯入網頁格式的截圖、下面是同時匯入資料及格式的截圖。


四、網頁表格代碼
將「.WebSelectionType = xlEntirePage」變為註解,如此「WebSelectionType」的屬性值將回到預設值,亦即「xlAllTables」,表示取得網頁上所有表格,表格以外的資料不取得。

五、VBA參考文件
「WebSelectionType」在取得網頁資料較為關鍵,除了原本的「xlEntirePage」是網頁的全部資料、「xlAllTables」是網頁的全部表格,最後還有一個選項是「xlSpecifiedTables」,意思是取得某個特定的表格,這些選項涉及到瞭解網頁結構和取得資料目的,剛好中央銀行的網頁裡只有一個表格,而且剛好是範例真正希望取得的資料,所以設定「xlAllTables」即取可,在往後的章節,視情況需要進一步介紹其他選項。

六、程式碼簡化
簡化後的VBA程式碼如圖所示。

七、銀行存款利率
再次執行程式,所取得的網頁資料變得很純粹,便是我們關心的五大銀行平均存款利率。

透過微軟開發人員中心資源學習VBA
Excel VBA程式碼較為複雜,本書以範例為基礎進行說明,因篇幅有限,無法完整介紹所有方法屬性的相關內容。讀者有興趣可以此書為方向,搭配微軟線上技援手冊,獲得較為全面的理解。例如以這一節範例關鍵的「WebSelectionType」屬性,只要在Google或奇摩、或者直接於透過微軟開發人員中心資源學習VBA搜尋「WebSelectionType」,不難找到相關文章。
歡迎前住贊贊小屋VBA教學中心。
取得範例程式請前往VBA社團,訂閱請加入VBA Line社群。
VBA課程推薦:零基礎入門進階的20小時完整內容