首页 > 解决方案 > 保护 VBA Excel 不被他人保存

问题描述

我试图保护我的 Excel VBA 不被其他也在使用我的宏的人保存。我尝试使用下面的代码,但它不起作用。我想防止其他人在关闭之前以及使用Ctrl+S进行保存时保存 VBA Excel。

Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not SaveAsUI Then
        Cancel = True
        MsgBox "You cannot save this workbook"
    End If
End Sub

标签: excelvba

解决方案


我使用的是 Excel 2019,无法重现您的问题。该代码按预期工作。如果我按Save我会得到消息框并且它不会保存。如果我关闭工作簿,它会询问我是否要保存,如果我Save再次按下我会得到消息框并且它不会保存。

但是您可以尝试添加一个Workbook_BeforeClose带有 a 的事件,ThisWorkbook.Saved = True以使 VBA 相信工作簿已被保存。这可以防止在关闭工作簿时出现询问您是否要保存的消息框。

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Saved = True
End Sub

Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not SaveAsUI Then
        Cancel = True
        MsgBox "You cannot save this workbook"
    End If
End Sub

推荐阅读