您可以使用ThisWorkbook 对象中的Workbook_BeforeSave 事件来捕获选择另存为(或使用键盘快捷键)的用户,这将导致显示另存为提示并将SaveAsUI 设置为true。如果SaveAsUI 为真,这意味着用户正在尝试将文件另存为其他内容,因此您可以取消另存为操作。
打开 Visual Basic 窗口 (Alt + F11) 并将以下代码放入 ThisWorkbook。
禁用另存为
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If (SaveAsUI = True) Then
MsgBox "Sorry. I can't have you saving this file as something else."
Cancel = True
End If
End Sub
您可以根据需要删除MsgBox 行;如果您想通知用户该功能已禁用,我将其作为示例
要禁用同时保存和另存为功能,您将删除if 语句并取消保存操作,无论是否显示另存为提示。
禁用保存和另存为
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "Sorry. I can't have you saving this file at all."
Cancel = True
End Sub
如果您只想禁用保存操作,您只需要查找用户正在保存的位置,但 SaveAsUI 不正在显示(即用户只是保存文件)。
禁用保存
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If (SaveAsUI = False) Then
MsgBox "Sorry. I can't have you saving any updates to this file."
Cancel = True
End If
End Sub
最后,请注意,如果用户只是关闭文件,用户仍会收到保存提示。用户将无法保存并且文件将关闭,但如果您希望体验更简洁,则需要进行额外的更改。当用户关闭文件时,Excel 会检查 ThisWorkbook.Saved 变量以查看文件是否已保存。如果为 false,则会提示用户保存文件。为了防止这种情况,我们可以将此布尔值设置为 true 而不保存,从而“欺骗”Excel 以为文件已保存
禁用保存和另存为,包括在用户尝试关闭文件之后
在您的Workbook_BeforeSave 代码之后添加以下代码。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Saved = True
MsgBox "Click OK to continue closing this file. Changes will not be saved."
End Sub