VBA QueryTables.Add:1組錄製巨集修改的範例

VBA QueryTables.Add是最基本爬蟲方式,也是Excel很好用的工具,它可以用錄製巨集的方法產生程式碼,本文以簡單範例介紹可能會有的問題,說明如何適當修改順利執行。

一、錄製巨集取得程式

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

E21e11

二、網頁格式代碼

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

E21e21

三、網頁格式對比

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

E21e31
E21e32

四、網頁表格代碼

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

E21e41

五、VBA參考文件

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

E21e51

VBA QueryTables.Add

VBA QueryTables.Add 是用來將CSV、TXT或外部資料直接匯入指定工作表儲存格的VBA方法,適合自動化報表與會計資料整理。它可設定分隔符號、編碼格式與載入方式,避免開新活頁簿,讓資料匯入流程穩定可控,是實務中處理系統匯出檔與大量資料更新的常用做法。

簡化後的VBA程式碼如下所示。這段 VBA 範例示範如何透過 QueryTables.Add,讓使用者自行指定網址來源與匯入位置,常用於網頁資料擷取、自動報表更新與系統資料同步。

DownloadWeb4.bas
‘ 主程序:從指定儲存格讀取網址,並將網頁資料匯入工作表 Sub DownloadWeb4() ‘ 清除剪貼簿狀態,避免殘留複製模式影響操作 Application.CutCopyMode = False ‘ 宣告變數:WebAress1 儲存網址來源、WebAress2 組合連線字串、DesCell 為目的儲存格位址 Dim WebAress1, WebAress2, DesCell As String ‘ 讓使用者用滑鼠選取「放有網址的儲存格」 WebAress1 = Application.InputBox(“請選擇網頁網址所在儲存格”, “匯入網址”, Type:=8) ‘ 讓使用者選擇資料要匯入的起始儲存格,並只取其位址 DesCell = Application.InputBox(“請選擇資料開始儲存格”, “匯入目的”, Type:=8).Address ‘ 將網址前方加上「URL;」,組成 QueryTables 使用的連線字串 WebAress2 = “URL;” & WebAress1 ‘ 建立 QueryTable,從網頁抓取資料並放入指定儲存格 With ActiveSheet.QueryTables.Add _ (Connection:=WebAress2, _ Destination:=Range(DesCell)) ‘ 同步下載資料,等資料完成後才繼續往下執行 .Refresh BackgroundQuery:=False End With End Sub
E21e61

七、銀行存款利率

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

E21e71

透過微軟開發人員中心資源學習VBA

Excel VBA程式碼較為複雜,本書以範例為基礎進行說明,因篇幅有限,無法完整介紹所有方法屬性的相關內容。讀者有興趣可以此書為方向,搭配微軟線上技援手冊,獲得較為全面的理解。例如以這一節範例關鍵的「WebSelectionType」屬性,只要在Google或奇摩、或者直接於透過微軟開發人員中心資源學習VBA搜尋「WebSelectionType」,不難找到相關文章。


贊贊小屋VBA教學中心:

Excel巨集執行Excel巨集程式Excel巨集程式碼Excel VBA教學VBA教學Excel巨集範例VBA UserFormVBA VLOOKUP

VBA課程推薦:零基礎入門進階的20小時完整內容

VBA課程:20小時完整入門進階,職場及投資應用