Excel抓取網頁資料可以透過錄製巨集快速執行,雖然可以自動化但沒辦法更改網址,本文介紹1個方法如何簡單修改VBA網址,讓你的巨集程式下載更加方便。
可以這麼理解全球資訊網,各國各地有數不清的伺服器,每台伺服器有許多網頁,千千萬萬網頁用同一套標準格式編輯,每頁標上門牌號碼(網址),瀏覽器搜尋到網址,超連結傳送請求給某伺服器,伺服器接受請求,如果網路通道順暢,立即回傳網頁資料,個人電腦的瀏覽器經過解析,呈現圖文網頁在螢幕上。這其中,網址如同浩翰圖書館裡的編號和頁碼,如果想要撈取網際網路裡的數據,必須先解析資料庫網址。以下,就公開資訊觀測站的公告財務報表為例,分享Excel的VBA於其中妙用:
一、公開資訊觀測站IFRS單一公司案例文件預覽及下載,3323的105年第1季 IFRS 合併財務報表預覽。

二、「錄製巨集」:「您執行的所有命令將儲存至巨集,您可以再次播放巨集。」簡單理解,就是Excel把操作以程式形式記錄起來,可以參考《會計人的Excel小教室》第一章第四節。

三、取得網頁資料,先前有介紹過做法。

四、下載完後,「停止錄製」,注意到這裡是「105年第一季」。接著在此「開發人員」功能頁籤中,點擊「Visual Basic」。

五、進入VBA編輯器,雙擊「Module1」,這麼一大段天書,便是剛才所錄製的Excel操作,下面參數部份也許看不懂,但是開頭的地方該能看得懂:

With ActiveSheet.QueryTables.Add(Connection:= _
“URL;https://mops.twse.com.tw/server-java/t164sb01step=1&CO_ID=3323&SYEAR=2016&SSEASON=1&REPORT_ID=C”, _
Destination:=Range(“$A$1”))
.Name=”t164sb01step=1&CO_ID=3323&SYEAR=2016&SSEASON=1&REPORT_ID=C”
其中「 _」是VBA程式換行碼,考慮文章呈現,部份我作了修改,自己實際試作的讀者,以自己Excel檔案的VBA程式為準。
六、關鍵字既然是「ID=3323&SYEAR=2016&SSEASON=1」,照樣造句,依需要修改,例如:「ID=3323&SYEAR=2016&SSEASON=2」。

七、再次執行巨集,成功下載第二季的財務報告。

很多道理一貫相通。透過網址取得網頁資料,在這篇文章是修改VBA程式,以先前文章介紹過的Excel指令來說,是修改視窗欄位中的網址,能夠達到相同效果。更進一步說,平常瀏覽器閱讀網頁,也可以直接在網址列把「1」改成「2」。重點是,這些以期間資料為主的網站,其網址有一定規則可循,像這篇文章的「公開資訊觀測站IFRS單一公司案例文件」,網址一長串,至少有三個地方很明顯:股票代碼、年度、季度,掌握這些規律,是批次取得大數據的關鍵,其中涉及到的技術較為複雜,留待日後一一介紹。
歡迎前住贊贊小屋VBA教學中心。
取得範例程式請前往VBA社團,訂閱請加入VBA Line社群。
VBA課程推薦:零基礎入門進階的20小時完整內容