Excel VBA網路爬蟲:暫存工作表複製資料到範本報表

目錄

Excel VBA網路爬蟲的對象往往日新月異,每次所取得資料必須存檔備查。本文介紹先建立報表範本,新增暫時工作表,待資料複製後再刪除臨時工作表的方法。

在第四章《Excel牌告匯率》中,介紹如何取得銀行的匯率資料,因為台灣銀行已經有整理好完整的歷史報表,提供電子檔下載,那時候把重點放在下載同一網頁上的大量資料,然後再進行格式上處理。實務上碰到比較多的狀況,是網站上僅提供當日或即時的資料,如果有需要必須定期把這些資料儲存起來,累積成自己的資料庫,在此說明如何達到比較有效率的作業方式。

一、台灣銀行牌告匯率

台灣銀行本行營業時間牌告匯率,總共有十九種幣別的現金買入出匯率及即期買入賣出匯率。

二、網路爬蟲VBA程式碼

三、原始資料錯位

這一類型雖然資料旦直更新,但是架構不變,所以仔細分析所得資料,「現金匯率」、「即期匯率」、本行買入」、「本行賣出」這些標題欄位錯位了,但可想而知它每次錯的位置會一樣的,另外第三列、第七列、……、依序是每一種幣別的換算匯率,利用這些特性,可作為接著編寫程式的重要參考。

四、空白報表模表

在第四章中,是直接整理取得網頁資料在的工作表,這裡介紹另一種思惟,先利用原始方法,將瀏覽器的網頁內容複製到Excel上,稍加整理格式,得到一個跟來源網頁非常神似的模版。

五、資料整理VBA程式

100:為避免相同程式段落一再撰寫,直接以Call方法呼叫現成的程序巨集;

130:「Date」為VBA內置的函數,和Excel的「Today()」用法相同,都表示是系統今天的日期,這裡是將變數「D」設定為今天

280~300:先新增一個暫存工作表,先把取得的網頁資料複製到這裡,接著複製到既有格式模式的工作表上,最後將暫存工作表刪除。這裡額外使用了「Application.DisplayAlerts = False」用意是關閉所有的警示視窗,在刪除完工作表後,再將警示功能開啓。

六、暫時性工作表刪除

執行完程式,結果是新增了一個工作表「20171022」,內容是當天各幣別的匯率,格式和工作表「Template」相同。另外在第二張圖是沒有「Application.DisplayAlerts = False」的情況,會跳出一個警示視窗,在這裡很確定真的要刪除,所以於VBA即將此功能關閉,避免無謂的操作。


七、VAB巨集按鈕

還記得第二章第五節有分享過巨集按紐,由於這一節已經相當完整,可以做成一個按紐,隨時有需要按一下,即可快速「取得當日匯率」。

日積月累的取得網路資料

這一節分享的是取得當日匯率,其實如果僅止於瞭解當日的匯率情形,以瀏覽器上網即可。特地編寫VBA程式碼,好處在於收到當日匯率的同時,也把這份資料以Excel檔案的形式儲存起來,倘若日積月累,日後便是相關統計分析最好的資料庫,下一節就接著再介紹如何每天匯率作適當的整理。

相關文章