Excel爬蟲範例:教你如何一次取得5家公司損益表

Excel爬蟲範例在此教你如何設計VBA程式,從公開資訊觀測站一次取得5家公司的損益表,分別下載到自動命名好的工作表上面,方便快速利用這些財務資料。

上一節成功取得股票代碼及公司名稱的清單,然而以本章宗旨而言,目的仍然是下載財務報表資料,最好是批次獲得、直接儲存為Excel檔案。上一章《Excel牌告匯率》中,是將所有批次取得的資料放在同一張工作表,不過本章財務報表的情況不同,因為各家公司損益表結構不一定相同,比較不適合都放在同一張工作表。有個變通作法,將每家公司的資料分別放在不同工作表上,在第三章第三節有介紹過如何以VBA程式新增工作表,當時是以Application.Inputbox參照儲存格的方法,其於本質上仍然是一次一個的手工操作,這一節要介紹如何批次新增工作表,同時分別取得各家公司的財務報表:

一、選擇五檔股票

E04e01

二、VBA程式碼

E04e02

40:想利用Excel作為VBA程式的一部份,首先必須計算Excel資料的範圍,於此範例即為有多少行,「UsedRange.Rows.Count」便是執行此計算最佳的程式。

70:MsgBox為VBA中相當基本的函數,作用是跳出提示訊息的視窗,函數後面接的字符串是視窗中顯示的訊息文字。

三、確認資料筆數

執行巨集後,跳出來的視窗:「資料共有7行」。

E04e03

四、新增工作表程式

E04e04

30:宣告變數。

50~60:計算工作表「一」有多少行資料,由於上一個步驟驗證過,計算結果會比實際行數多一,所以這裡設定「Row=Row-1」。

80:以變數「i」設置迴圈,參照資料有標題行,因此這裡是從「2」開始,一直到代表總共有多少行。

100~120:將「Stock」變數設定為「股票代碼-公司名稱」。

140~150:新增工作表,依序以「Stock」更改新工作表的名稱。

五、成功新增工作表

E04e05

六、取得財報程式

最後再添加補充程式碼如下,執行前記得先將上一步驟新增的工作表刪除,避免VBA提示錯誤。另外這裡的程式行雖然多,主要是UsedRange.Rows.Count、ActiveWorkbook.Sheets.Add、ActiveSheet.QueryTables.Add三個VBA方法綜合應用,在先前皆已介紹過,於此不再多作說明。

E04e06

七、程式執行成果

成功取得五家公司2016年度的損益表。

E04e07

Excel建立VBA迴圈清單

迴圈是程式語言批量取得資料的最方便工具,其特性是利用一個遞增或遞減的變數循環,如同上一章《Excel牌告匯率》範例所示,此特性在時間日期相關的網頁絶佳合適。這一章的公司代碼雖然也是數字,可是為不規則不連續,沒辦法直接設置迴圈,所以繞個彎,改在Excel工作表先建立清單,然後依照行列順序的特性,作為VBA迴圈程式的循環對象。設計Excel公式時,依照情況需要選擇不同函數搭配,VBA取得網頁資料也是同樣道理,必須視網頁結構編寫不同的程式碼,這一章和上一章便是極佳例證。


贊贊小屋服務:3,000元網頁設計,5,000元Google Kinsta主機,8,000元Excel ERP系統

歡迎前往贊贊小屋VBA教學中心

取得範例程式請前往VBA社團,訂閱請加入VBA Line社群

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

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

最新文章: