Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表

Exce VBA爬蟲自動化專案最後要將所取得資料合併彙總,中間過程中可能要把原始資料另存新檔備份,新資料工作表整理後刪除,本文介紹如何設計相關程式。

本書上一節的程式已經把取得的網路整理成可以進行分析的報表格式。可是還有一個問題,依照目前程式每一天或每一次所取得資料都是在各自分散的工作表上,雖然資料的儲存架構很清楚,可是在資料處理和分析時卻是不太方便。對於Excel而言更是如此。因此本節介紹如何將每次所取得的資料累積彙總在同一張工作表上。

一、VBA Call呼叫

本書到目前已經有一系列取得資料及整理的VBA程序,首先利用Call指令將這些程序串起來,一鍵執行。

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 1

二、資料匯總報表

上個步驟程式成功取得20200821的資料,可是如同本節一開始所述,希望將20200820和20200821的資料自動匯總起來,而且之後每一天都是如此處理。所以先複製20200820工作表,重新命名為「匯總報表」。

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 3

三、Excel對象變數

Dim SumRan As Integer, Sumsht As Worksheet:本書先前所宣告的變數類型,像是日期、文字、整數等,都是一般程式語言共通都會有的變數類型。不過VBA作為操作Excel的程式語言,當然也會有專屬於Excel、其他程式語言沒有的對象及變數類型,例如這裡的Worksheet便是以Excel操作對象的變數,接下來會看到Excel對象在VBA指定值的時候也會特別的作法。

Set Sumsht = Sheets(“匯總報表”):先前設定變數值都是直接書寫X=Y這樣的結構,其實VBA有專門設定值的指令Let,只是在一般變數類型的情況可以省略,通常不會特別去寫。但如果是針對物件特殊的變數,例如這一節的Excel工作表,不但不能省略,而且要改用Set指令。

Worksheets(Today).UsedRange.Copy Sumsht.Cells(SumRan + 1, 1) :Excel在匯總工作表時,先選取範圍、複製、最後是在目的地儲存格貼上。這裡是VBA程式語言的表達式。

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 5

四、VBA合併報表

執行結果,原本兩個日期的工作表匯總成功。

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 7

五、程式另存新檔

當天所取得的資料已經整理到匯總報表了,檔案裡原來每一天的工作表裡的資料,都匯總報表裡的資料會是重複兩邊都有的資料。為避免每一天的工作表日積月累變得非常多,想直接刪除,但又希望保留原始資料,以後將來有需要時可使用。因此在第一步驟相對應的「新增工作表並取得網路資料」這個程序裡,最下面再新增四行程式,這四行指令是簡單的英文,所代表的Excel操作應該也很容易理解,就是複製另存所取得的資料。

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 9

六、另存新檔資料夾

前往VBA程式所設定的電腦資料夾,果然有當日的原始資料檔案。

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 11

七、自動刪除工作表

既然原始資料已經保留,將重複的工作表刪除。因為Excel在刪除工作表時會出現提醒訊息,為了讓VBA程式順利執行不要被提醒訊息打斷,這裡先將是否提醒關掉:「Application.DisplayAlerts = False」,刪除工作表:「Worksheets(Today).Delete」,最後再把訊息機置開啟:「Application.DisplayAlerts = True」。

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 13

Excel VBA爬蟲資料自動化

本書到第二章已完整介紹Excel VBA取得網路資料、整理、彙總的程式設計,雖然是以書籍排行榜為例,不過這個流程應該可以適用到所有能取得的外部資料。以Excel作為工具是因為它非常普遍,功能強大,藉助VBA是為在資料量越來越多的情況,勢必要將操作流程自動化執行。本書後續章節會介紹如何使用所取得的資料。

本文內容取自《人人都學得會的網路大數據分析入門》,書本仍然是最好的學習方法,省下一張電影票的錢,今天就買本書吧!

Excel VBA爬蟲資料合併:程式另存新檔與刪除工作表 17
歡迎加入Line社群,口袋裡的VBA小教室!