如何使用VBA禁用保存和另存为

时间:2012-09-04 13:30:38

标签: vba excel-vba excel

我正在编写一个宏,我需要在VBA复制并粘贴所有信息的工作簿上禁用保存功能。这可能吗?

3 个答案:

答案 0 :(得分:51)

您可以使用Workbook_BeforeSave事件来实现此目的,禁用CommandBars不会使用CTRL + S等快捷方式阻止用户。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    MsgBox "You can't save this workbook!"
    Cancel = True

End Sub

答案 1 :(得分:7)

您可以使用Application对象直接访问工具栏按钮:

Private Sub Workbook_Open() 
    Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save As...").Enabled = False 
    Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save").Enabled = False 
End Sub 

答案 2 :(得分:0)

另外一个注释;由于我的组织使用匈牙利语版本的Excel,因此在使用上述代码时遇到了困难。 因此,如果您使用NON ENGLISH EXCEL,则必须以Excel的本地语言指定Controls元素...在我的情况下,有效的方法是:

Application.CommandBars("Worksheet Menu Bar").Controls("Fá&jl").Controls("Menté&s má&ské&nt...").Enabled = False Application.CommandBars("Worksheet Menu Bar").Controls("Fá&jl").Controls("Menté&s").Enabled = False