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

问题描述 投票:12回答:3

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

vba excel-vba excel
3个回答
10
投票

您可以使用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 

56
投票

您可以使用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

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

© www.soinside.com 2019 - 2024. All rights reserved.