MS Office自动保存问题的求助与探讨

问题来源

MS Office自动保存到OneDrive的功能过于狗屎,不能自动保存到本地(我知道有自动恢复的功能,但不能指望它……),也没什么办法自动保存文件,不像VSCode或是Notepad4那样可以在空闲时间自动保存之类的功能

所以,有没有什么办法能自动保存Office文件呢

想要实现的效果

  1. 关闭时自动保存文档
  2. 空闲时自动保存文档
  3. 新建文件关闭时自动另存到指定位置作为备份(后缀加时间防文件冲突)
  4. 在指定时间保存文档(如,每5分钟保存一次)

可能的实现思路

  1. 通过后台程序实现
    • 思路
      • 程序识别到Office软件
      • 后台循环计时,到时间自动发送 Ctrl + S
      • 后台检测键鼠活动,无活动时隔一段时间发送 Ctrl + S
      • 关闭时检测弹窗,是否保存自动选是,另存为自动选择地点并点击保存
    • 难点
      • 在非管理员权限下难以取到Office程序的操作句柄
      • 如果我就是不想保存修改的文档呢?
      • 如何去掉弹窗,实现无感保存
      • 程序通过按键的方式保存是否会导致输入中断
      • Office文件修改后没保存就手动最小化了,如何在此情况下自动保存
      • ……
  2. 通过VBA实现(我不会……此处或许应该邀请一下小恐龙大佬?)
  3. 其他思路

求问各位有没有什么更好的思路或者现成的软件

如果没有我可能会手搓一个简易版的试试水……

自动保存到od时本地不就有一个副本么?

这功能很不错,实时保存还有版本记录

只喜欢本地保存……上传到云才能自动保存在我看来是不可接受的……

1 个赞

那你慢慢想办法,祝你好运

https://www.zhihu.com/question/534970314/answer/2746702286
之前顺手收藏的一个回答,没有实际测试过

1 vba 代码, 写 ActiveDocument.Close 事件 或者 auto_saves 事件
2. 可以类比4操作.
3. word选项, 开启备份功能,加.bak后缀.
4. word选项 , 设置自动保存间隔时间即可.

office365, 文档存放在OneDrive, 会自动保存,不用考虑1-4问题.

2 个赞

我就问问,这个vba咋用?

似乎只能保存为 docm 格式?

贡献一个适用于LibreOffice的VBA

Sub TestSave()
	GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
    Dim oDoc As Object
    oDoc = ThisComponent
    Do
		oDoc.store()
		Wait 20000
	Loop
End Sub

即点即用的是,LibreOffice里面点“工具-宏-编辑宏”,编辑好了保存。然后在你想要运行脚本的Office文件里点击“工具-宏-运行宏-找到你编写的脚本-运行”即可

1 个赞

可以写到默认空白模板里. normal.dotm

还可以找其他替代,比如wps,就解决了问题。