关闭VBA(Excel/OneDrive)中的自动保存功能。

8

我正试图关闭我的Excel文档(OneDrive上的Excel 365)的自动保存功能:

enter image description here

根据一些研究,AutoRecover.Enabled = FalseApplication)应该是正确的属性,但由于某些原因我无法使其生效。我没有收到错误消息,但是自动保存功能没有关闭。

不同的对象(myWorkbook.AutoRecover.Enabled = False等)也没有成功。有什么想法吗?


3
尝试使用 myWorkbook.AutoSaveOn = False。这行代码的作用是关闭工作簿的自动保存功能。 - Siddharth Rout
做得好...完全正确...我刚刚发现,AutoRecover 是另一回事。请随意撰写答案,因为你是“第一个”。 - Albin
没问题。随意采用@Any1There的答案 :) - Siddharth Rout
1
@SiddharthRout好的,谢谢。 - Albin
2个回答

13

这段代码检查Excel 365是否开启了自动保存功能,并在开启时将其关闭。它会显示更改前后的状态消息。

注意:以下代码仅适用于Office 365订阅用户且Excel版本为2016或更高版本。

Sub ChkAutoSv()
Dim AutoSv As Boolean

    If Val(Application.Version) > 15 Then
        AutoSv = ActiveWorkbook.AutoSaveOn
        MsgBox "AutoSave set to: " & AutoSv
        If AutoSv Then ActiveWorkbook.AutoSaveOn = False
        AutoSv = ActiveWorkbook.AutoSaveOn
        MsgBox "AutoSave now set to: " & AutoSv
    End If
End Sub

此代码检查Excel 365中是否开启了自动保存功能,如果是,则关闭它。在更改前后,它会显示指示状态的消息。 - Any1There
希望这可以帮到你。你应该能够根据需要修改它以适应你的代码。 - Any1There
应该是 If val(Application.Version) > 15 Then ThisWorkbook.AutoSaveOn = False 说实话,我不确定为什么会有消息框,或者自动保存的getter... - Sancarn
除非...如果它已经关闭,你不能将它设置为false吗? - Sancarn

0

增强Any1There解决方案
我刚刚看到有必要通过更新的答案来恢复这篇文章,以将其创建为在O365上使用工作簿时的强制性功能。

Sub Exec_Example()
    ...
    Set WBToWorkIn = Workbooks.Open(TxtFilePath): DoEvents
    Call Exec_TurnAutoSave(False,WBToWorkIn)
    ...
End Sub
Sub Exec_TurnAutoSave(IsTurnAutoSaveOn As Boolean, Optional ByVal WBToTurn As Workbook)
If WBToTurn Is Nothing Then Set WBToTurn = ThisWorkbook
Dim IsAutoSaveOn As Boolean
    If Val(WBToTurn.Parent.Version) > 15 Then WBToTurn.AutoSaveOn = IsTurnAutoSaveOn
    Set WBToTurn = Nothing
End Sub

理由
随着O365的大规模部署,通常默认启用此功能,而且在调试或执行代码时似乎会导致Excel实例崩溃。在处理工作簿自身的编码过程中,最安全的方法是将其关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接