贊贊小屋

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料

Excel雖然可以取得網頁資料的操作錄製巨集,實際執行卻錯誤中斷。本文介紹進入VBA介面,利用使程式行變為註解指令,將QueryTable.Add的CommandType屬性取消,順利執行程式。

上一節嘗試錄製巨集,執行時會提示錯誤而中斷,其實這並非結束,反而是一個開始,因為錄製巨集在這裡只是輔助工具,用意在於瞭解Excel命令相對應的程式碼,想操作Excel達到淋漓盡致的地步,仍然必須直接編寫VBA,這一節便正式開始介紹如何編寫VBA:

一、VBA錯誤

上一節錯誤提示視窗中,按下「說明」,即會超連結到「無效的程式呼叫或引數(錯誤5)」,這裡文字其實不容易對應到上一節巨集,但初步看來,就是程式裡面的參數設定有問題。

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第1張

二、CommandType屬性

巨集使用的是「QueryTables」這個命令,方法是「Add」,標黃色程式碼是其中參數之一:「CommandType=0」,所以在微軟Excel支援中找到「QueryTable.CommandType屬性」,看起來都跟網頁資料無關。

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第2張

三、QueryTables.Add

再參考「QueryTables.Add」的說明,可見得「CommandType」並非必要的參數。

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第3張

四、工具列編輯

於是解決方式很直接,要開始編輯VBA了,到上方命令列拉下「檢視」菜單,移到「工具列」將「編輯」勾選。

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第4張

五、使程式行變為註解

先選取「CommandType=0」那一行程式碼的範圍,執行「編輯」工具箱裡的「使程式行變為註解」,VBA會將那一行程式碼前加個單引號,效果是把程式碼轉換成單純文字,不再是VBA程式,當然就不會是VBA執行中斷的錯誤碼。

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第5張

六、執行巨集

滑鼠移到上方功能區「開發人員」頁籤,「程式碼」區塊,點選「巨集」,在跳出來的視窗「執行」「DownloadWeb」。

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第6張

七、下載網頁資料

成功以VBA程式碼的方式下載網頁資料。

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第7張

從這一節範例來看,只是把巨集程式碼其中一行取消,原本無法執行的巨集,已經是可以執行的VBA代碼了。過程中有稍微瞭解相關程式說明,最後雖然達成效果,對於理論知識其實仍然懵慒懂懂。VBA是一門可深可淺的學問,這本書著重於實務上應用,以操作流程為主,像在這裡VBA本身有偵錯功能,只要能排除錯誤,順利往下執行,理論部份還是等到有需要再作研究。

本文內容取自《人人做得到的網路資料整理術》,書本仍然是最好的學習方法,今天就買本書吧!

博客來網路書店網址:

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第8張

贊贊小屋VBA程式設計線上課程:

Excel進入VBA將QueryTable.CommandType程式成為註解,順利取得網頁資料 VBA網路爬蟲 第9張