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

Han*_*nah 9 excel vba excel-vba

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

Fra*_*ean 53

您可以使用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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,Francis的提议必须在设计模式下保存在VBA中,因为这段代码工作得非常完美,以至于它不能保存自己:-) (18认同)
  • 这是更合适的答案. (3认同)
  • 这比使用标记为答案的答案更可靠. (3认同)
  • 一旦放置到位,如何保存此代码。因为如果您单击保存,它将被取消 (2认同)

Rya*_*ugh 9

您可以使用该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 
Run Code Online (Sandbox Code Playgroud)