前景提要(開了好多報表做了好久的數據,居然關錯了,關閉即自動保存你值得擁有)
最近有童鞋表示,現在都是大數據時代了,在公司處理的數據都非常的多,雖然有了VBA的幫助,但是受限于excel版本的問題以及電腦本身性能的影響,處理數據還是要浪費一些精力的,加上經常上面交代的都是一些突發的臨時事件,很容易打亂我們的節奏,經常出現打開的數據報表過多,關錯了數據表自己做了N小時的數據就沒有了,他們詢問小編能不能弄出一個關閉就自動保存數據的方法。
場景模擬
其實說到這個功能的時候,小編也是立刻就有方案和思路了,為什么呢?因為這樣的大烏龍小編自己也是做過(捂臉),并且不止一次(捂臉),你要問我找回數據的方法,對不起我嘗試了好多百度的方法均無功而返,最終還是利用VBA實現了關閉工作薄即自動保存數據的功能,幫我解決了這個眼花手殘導致的問題。
方法分析
關閉即自動保存,這樣的功能excel是沒有的,excel本身有的功能就是間隔多少時間幫你自動保存一下數據,而且是時靈時不靈的那種,其實我們可以利用工作薄的事件功能,再關閉工作薄之前,自動執行一次保存命令,不久解決了嗎?,上代碼
代碼區
非常簡單
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Close True
MsgBox "工作薄也保存,請放心下班!"
End Sub
來看看效果,一旦你點擊了關閉工作薄的按鈕,就有驚喜
點擊確定就會關閉工作薄了,當然你可以不需要展示這個彈窗的,彈窗僅僅是為了展示的效果而已,皮一下很開心,哈哈,我們在打開看看數據是否成功保存
nice,成功的實現了工作薄關閉前的自動保存功能
代碼分析
今天的代碼并不難,難得是寫代碼的地方,我們之前說了這是一個工作薄的事件程序,上一節我們分享工作薄的登陸界面的時候,也說到過這個問題,今天我們簡單說下
工作薄的事件程序都是在thisworkbook這個代碼塊的,每一個工作薄打開VBA編輯界面都會有這樣的一個代碼區,雙擊就可以進入該代碼區
比方說工作薄打開事件,我們學習工作薄的保護的時候,那個登錄頁面,就是在工作薄的打開事件的接觸上寫的,在工作薄打開的時候,執行展示登陸窗體的操作的
而今天也是一樣,我們要執行的工作薄的關閉之前事件,在關閉之前,先保存數據再關閉,所以這個程序的開頭和我們之前的開頭不一樣
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbook_BeforeClose這幾個英文單獨大家應該都能看到,工作薄關閉之前,關閉之前干嘛?就是我們的代碼要執行的操作了
ActiveWorkbook.Close True
MsgBox "工作薄也保存,請放心下班!"
工作薄的保存,然后再關閉工作薄了
好了 這樣就成功的實現了一個工作薄關閉之前自動保存數據的功能了,