Excel VBA 每5分鐘執行:OnTime與TimeValue的2大用法

Excel VBA 每5分鐘執行是很多地方會用到的語法,本文以自動儲存檔案為例,先介紹如何於選項中設定,接著說明相關的程式代碼,Application.OnTime Now與TimeValue的2大用法。

一、儲存選項設定

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

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

E46k11

二、簡單設計程式

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

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

E46k21

三、寫入現在時間

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

E46k31

四、Call呼叫執行

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

一張含有 文字 的圖片
自動產生的描述

五、Application.On Time

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

E46k51

六、TimeValue函數

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

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

一張含有 文字 的圖片
自動產生的描述

七、Excel VBA 每5分鐘執行

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

這裡文章範例是每分鐘儲存一次,似乎有點頻繁,讀者可以在上個步驟程式碼的基礎上,自行嘗試修改為5分鐘,應該會更符合實際,透過自己操作也能更瞭解如何撰寫程序。

E46k71

自動化專案如何優化

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

本文章講解影片:

YouTube video

贊贊小屋VBA教學中心:

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

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

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

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

最新文章: