Excel VBA網路爬蟲QueryTables.Add:WebFormatting及WebSelectionType屬性

Excel VBA網路爬蟲時,錄製巨集所取得的參考程式會將QueryTables.Add眾多屬性一起錄下來,本文介紹如何刪減不必要程式碼,同時修改其中「WebSelectionType」,改為僅取得網頁表格。

一、錄製巨集取得程式

原先程式碼是錄製巨集自動生成的,對於「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爬蟲文章合集

最新文章: