我正在编写宏,我需要在VBA复制并粘贴了所有信息的工作簿上禁用保存功能。这可能吗?
您可以使用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
您可以使用Workbook_BeforeSave事件来实现这一点,禁用CommandBar不会使您的用户使用诸如CTRL + S之类的快捷方式。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "You can't save this workbook!"
Cancel = True
End Sub
另一个附注;由于我的组织使用匈牙利语版本的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