VBA另存新檔:把Excel工作表分開儲存的1個範例

VBA另存新檔是很基本的操作,通常是在檔案安全備份或者Excel工作表分開儲存的場合會用到。本文以爬蟲資料彙總作為範例,教你如何設計專案完成此任務。

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

一、VBA Call呼叫

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

E25k11

二、資料匯總報表

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

E25k21

三、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程式語言的表達式。

E25k31

四、VBA合併報表

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

E25k41

五、程式另存新檔

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

E25k51

六、另存新檔資料夾

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

E25k61

七、自動刪除工作表

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

E25k71

Excel VBA爬蟲資料自動化

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


贊贊小屋VBA教學中心:

Excel巨集錄製教學Excel巨集程式VBA編輯器VBA自學入門VBA基礎語法VBA基本應用VBA UserFormVBA VLOOKUP

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

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

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

最新文章: