保护VBA Excel免受他人保存

时间:2019-03-19 06:48:56

标签: excel vba

我正在尝试保护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

1 个答案:

答案 0 :(得分:0)

我正在使用Excel 2019,但无法重现您的问题。该代码按预期工作。如果按 Save ,则会出现消息框,但不会保存。如果我关闭工作簿,它会问我是否要保存,如果按 Save ,我会再次收到消息框,但它不保存。

但是您可以尝试使用Workbook_BeforeClose添加一个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