VBA如何自动储存所有开启中Excel档案

之前有文章分享过编写VBA自动储存Excel档案或另存备份,虽然程式的设计立意良好,也达到预期效果,但其实存在两个缺陷:其一丶会希望这个程式是真正「自动」执行的,只要电脑开啓任何一个Excel档案,便会啓动此功能;其二丶工作场合中,常常电脑是同时开啓很多档案,会希望这些开启中的一切档案都可以自动储存。针对这两点,需要进一步完善VBA,在此介绍如何完善成终极版的自动储存功能:

一丶录制巨集时,下面有个「将巨集储存在」,选择「个人巨集活页簿」。

二丶巨集录好之後,「Alt+F11」开启VBA编辑环境,在「专案-VBAProject」视窗中会多一个「PERSONAL.XLSB」,这是Excel隐藏的活页簿,只要透过上个步骤录制过「个人巨集活页簿」,便开始启动「PERSONAL.XLSB」,此後不管开启任何一个Excel档案,就会同时加载「个人巨集活页簿」,也就是可以使用这个类似公共活页簿里的巨集程式。

三丶在「Microsoft Excel」物件中有个「ThisWorkbook」,连按两次後,在右边的编写程式码上方,左边选择「Workbook」,右边选择「Open」。

四丶编写如图所示的巨集程式码:其中「Private Sub Workbook_Open()」代表只要开启Excel便执行的VBA巨集,「Call Autosave」为呼叫执行在「Autosave」程序。

五丶在现有模组(Module 1)或新模组(Module 11)输入VBA程式,如图所示有两个巨集程序,一个是「自动储存所有开启中活页簿」,作用是每五分钟执行一次「Autosave」,而这个「Autosave」,作用是所有开启中的活页簿储存一次,储存後再执行「自动储存所有开启中活页簿」。综合这两个巨集,结果为每隔五分钟储存所有开启中的活页簿。

六丶除了储存所有开启中档案,另一个重点是开启任何档案皆会自动储存, 这里会用到前面所述隐藏的Excel档案。倘若有兴趣,必须先把资料夹选项中,「隐藏的项目」打勾设定为开启。

七丶通常在这个路径可找到「PERSONAL.XLSB」:「C:\Users\b8810\AppData\Roaming\Microsoft\Excel\XLSTART」其中「Users」为系统C磁碟的使用者资料夹丶「b8810」为使用者名称。一般不会直接用到这个档案,都是像第一个步骤录制好巨集,每次开启任何Excel档案,就会自动加载「PERSONAL.XLSB」所含巨集,在此只是让各位读者一探这个隐藏的档案。

这里分享如何将所有开启中的Excel档案设定为自动储存,实际使用发现,每隔一段时间Excel会停顿下来,执行VBA程式自动储存。相较之下,Excel在软体选项设置提供的自动储存功能,执行相对流畅,几乎感觉不到痕迹。这个可能在所难免,因为毕竟是在软体开发阶段,微软就把这个功能写在软体架构里面了。

虽然内置的自动储存功能效率较优越,但我遇过几次惨痛经验,这个功能失效,Excel当机停止运作,没办法找回我原来作业中的档案,着实欲哭无泪!所以如果是预计要执行一项复杂丶多个档案同时操作丶需要长时间进行的任务情况下,建议还是使用这个相对保险丶自己设计的VBA巨集程式,因为靠自己最安全。当然,双管齐下的话,那更是高枕无忧了!