12

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

4

3 回答 3

60

您可以使用 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
于 2012-09-04T13:38:04.660 回答
11

您可以使用该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 
于 2012-09-04T13:35:55.707 回答
0

还有一个旁注;我在使用上述代码时遇到了困难,因为我的组织使用的是匈牙利版本的 Excel。因此,如果您使用非英语 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

于 2020-05-27T08:08:40.600 回答