需求场景。我这边有一些重要的表格文件(但数量又不多),要确保该文件里面的数据不会丢失(或误删改)。设想有两种方案:第一种,就是每天定时自动备份。另一种做法是运用WPS的宏功能,在WPS触发保存事件的时候,在指定文件夹保存一个备份。
两种做法各有好处。第一种做法的优点在于,它可以实现一些比较强悍的功能,比如它可以根据文件修改情况作更新。缺点在于,通常情况下,如果你改变了需要备份的文件名,那么自动备份程序就找不到要备份的文件了。第二种做法的优点在于,你可以随便修改文件名,因为宏是内嵌在文件中的。缺点在于,对于每一个文件,你都需要复制这段宏进去。而且文字和表格代码还略有区别。
对于我这样的,重要表格大概两三张,文件又有可能传给下一任的,下一任又有可能修改文件名的。通过事件来实现自动备份,就相对而言是个较好的策略。
function Application_WorkbookAfterSave(Wb, Success){ let backupdir = "D:\\data"; if (GetAttr(backupdir) !== 16){//防呆设计 MsgBox(`Create folder ${backupdir} first or Change Variable $backupdir`); return; } let dt = new Date(); let [dt_d, dt_t] = dt.toISOString().split('T'); let path_separator = Application.PathSeparator; let cur_sh_dir = Wb.Path; let cur_sh_name = Wb.Name; let backupfile = `${backupdir}${path_separator}${dt_d}_${cur_sh_name}`; Wb.SaveCopyAs(FileName=backupfile);}吐槽:JS的日期类真的是丑陋和难用
提醒:事件响应函数不要触发事件本身,否则会形成无限循环,程序卡死。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。