VBA教學:Now與TimeValue時間函數,自動儲存檔案

Excel有自動儲存功能,本文介紹如何於Excel選項設定,再設計VBA程式在工作表儲存格寫入目前時間,配合Call、Application.OnTime、Now、TimeValue等語句,每隔一段時間自動儲存檔案。

一、Excel自動儲存

前往在「Excel選項」的「儲存」頁面,這裡會看到 Excel是有自動儲存機制,可以設置儲存時間以及儲存位置,不過依照贊贊小屋經驗,實務上偶爾還是會遇到沒有自動儲存的狀況,或者比較重要的資料會希望多一個儲存的機制,多加一份保險,而既然VBA是自動化操作Excel,自然會考慮設計VBA程式自動儲存。

關於Excel選項其他功能設定,可以參考贊贊小屋相關文章

VBA教學:Now與TimeValue時間函數,自動儲存檔案 1

二、VBA儲存Excel檔案

進入Excel VBA編輯器,如同截圖所示設計程式,第1行是利用VBA時間函數Time得到目前時間,並且設定為工作表「儲存時間」的儲存格「B2」的值,第二行程式碼相對簡單,作用就是儲存目前的檔案。

關於Excel如何進入VBA編輯器,開始設計並執行程式,可以參考贊贊小屋相關文章

VBA教學:Now與TimeValue時間函數,自動儲存檔案 3

三、VBA時間函數

執行程式後果然在工作表上寫入目前的時間。

VBA教學:Now與TimeValue時間函數,自動儲存檔案 5

四、Call呼叫執行

在先前第二步驟的基礎上進一步設計程式。在此是非常簡單的「Call範例一」,作用類似於Excel儲存格參照,呼叫引用執行範例一的程式,可以想見它同樣會在儲存格寫入目前時間,和上個步驟看到的狀況一樣。

一張含有 文字 的圖片

自動產生的描述

五、Application.On Time

接下來再跟各位介紹另一個相關的程式命令:「Application.OnTime Now,”範例一”」。這裡的「Application.OnTime」作用是在某個特定的時間點執行程式,後面第一個參數是「now」,表示於現在立刻執行,第二個參數是要執行的程式,因此這一整行的程式碼實際執行結果會跟上個步驟相同,馬上在特定工作表儲存格寫入目前時間,然後儲存檔案。

VBA教學:Now與TimeValue時間函數,自動儲存檔案 8

六、TimeValue函數

有了先前幾個步驟的程式基礎之後,終於可以設計Vba自動儲存的程式,首先「範例四」的程式跟上個步驟非常類似,它只是在時間值上多加了另一個時間函數「TimeValue」,它的三個參數分別代表小時、分鐘、幾秒,因此「“00:01:00”」意思是一分鐘。而這裡是Now加上TimeValue所以是一分鐘之後執行自動儲存這個程式。

接著來看「自動儲存」的部份,它同樣是在儲存格寫入時間,接著儲存檔案,關鍵是最後它再呼叫引用「範例四」的程式,而「範例四」又是一分鐘之後引用「自動儲存」的程式,因此兩者之間形成循環,每隔一分鐘都會執行一次自動儲存,達到和第一步驟Excel選項相同效果,每隔一段時間便會自動儲存檔案。

一張含有 文字 的圖片

自動產生的描述

七、VBA自動儲存

回到Excel繼續操作,不過每隔一分鐘可以看到在上方它會自動儲存檔案,因此會顯示「已儲存」,同時在特定工作表的「B2」儲存格會顯示最新一次儲存的時間點。

VBA教學:Now與TimeValue時間函數,自動儲存檔案 11

VBA自動化與專案設計

這篇文章所設計的程式雖然達到了自動儲存的效果,不過其實從專案設計的角度還有一些可以優化的地方。首先在自動儲存期間仍然可以操作Excel,但是它既然是無線循環,會希望設計一個能夠讓使用者操作停止的機制,另外程式預設是單一檔案的狀況,如果在電腦上同時開啟多個Excel活頁簿檔案,程式有可能會出問題。日後有適當範例贊贊小屋再分享,如何優化VBA自動儲存程式。

每天學習,每天充電:VBA自動化系列文章

VBA教學:Now與TimeValue時間函數,自動儲存檔案 13
歡迎加入Line社群,口袋裡的VBA小教室!