我无法找到任何仅禁用SaveAs功能的代码而不禁用保存。
列出的代码在禁用SAVE和SAVE AS方面非常有效,但我希望用户能够保存数据,但没有机会SAVEAS,因此他们无法创建工作簿的版本。 (在这种情况下,复制文件管理器中的文件不是问题 - 只是saveas是问题所在。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim xName As String
xName = "CancelBeforeSave"
If Not Evaluate("=ISREF('" & xName & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = xName & ""
Sheets(xName & "").Move after:=Worksheets(Worksheets.Count)
'To edit macros disable by changing to True
'Need to open workbook first with macros disabled
Sheets(xName & "").Visible = False
Exit Sub
End If
'To edit macros disable by changing to False
'Need to open workbook first with macros disabled
Cancel = True
End Sub
我希望工作簿在打开时不允许saveas而不影响其他打开的工作簿。
或者,如果我们可以重新启用保存功能,那么您提供的代码也是可以接受的。
只测试SaveAsUI
是否为真并取消保存。
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then
MsgBox "Save As is disabled", vbInformation
Cancel = True
End If
End Sub
在Workbook.BeforeSave event的文档中,您可以找到:
SaveAsUI
True
如果由于需要保存在工作簿中的更改而显示“另存为”对话框。
请注意,这不是安全功能。 这可以防止用户使用“另存为”对话框。但是在任何其他Excel工作表中使用一些VBA代码,您可以轻松地欺骗它。你可以做任何试图禁止真正保存的东西都可以解决。这不是安全功能。这只是为了防止“意外”保存。任何真正想要保存并且知道如何欺骗它的人仍然可以做到。