首页 > 解决方案 > 除非单击命令按钮,否则如何防止保存 Excel 工作簿?

问题描述

我有一个命令按钮来以特定格式保存 Excel 工作簿。

我希望用户无法保存工作簿,除非他们单击该命令按钮。

为了防止使用传统的保存选项,我使用了以下代码:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    MsgBox "You can't save this workbook!"
    Cancel = True
End Sub

如果单击命令按钮,如何防止传统的保存选项但允许保存?

标签: excelvba

解决方案


您可以使用布尔标志来指示是否允许保存,并且仅在调用包含保存工作簿的逻辑的宏时将其设置为 true。

在下面添加以下代码ThisWorkbook

Public AllowSave As Boolean

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Not AllowSave Then
        MsgBox "You can't save this workbook!"
        Cancel = True
    End If
End Sub

Public Sub CustomSave()
    ThisWorkbook.AllowSave = True

    ' TODO: Add the custom save logic
    ThisWorkbook.SaveAs '....

    MsgBox "The workbook has been saved successfully.", , "Workbook saved"
    ThisWorkbook.AllowSave = False
End Sub

请注意,您需要将CustomSave宏分配给将启动自定义保存的按钮。

演示:

演示


推荐阅读