Excel VBA 只读取代保存前
Excel VBA Read Only supersedes BeforeSave
我的代码合并了用于保存文档的业务逻辑 (Excel 365),以确保正确的命名约定、文件位置等作为 Sub Workbook_BeforeSave
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True ''Cancels the Save from the button push or Ctrl+S
Application.EnableEvents = False
'' code code code
Application.EnableEvents = True
End Sub
问题是,如果文件以只读方式打开(大多数情况下)Excel 将提示“文件是只读的”(图 a)并转到另存为文件功能区中的屏幕(图 b)。在按下保存按钮之前,Workbook_BeforeSave
sub 不会启动。它也不会离开这个屏幕,即使在 sub 运行 之后也是如此。
有什么办法吗:
- 在只读提示符前...或者
- 编写一些代码以离开“另存为”屏幕?
MS Read-Only promt(图一)
Save As Screen(图b)
非常感谢!
这不是一个完美的方法,但试试这个。
这将在按下保存按钮后完全取消保存,您可以添加自己的保存代码。
编辑:刚意识到下面的代码不会停止只读警报,但是当您单击“保存”时,它会取消“保存”并关闭“另存为”菜单。但是,当他们使用 Ctrl+S 时,发送键 {ESC} 会触发 Ctrl+ESC 打开星形菜单...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Disable Read Only Alert
Application.DisplayAlerts = False
'Disable Events
Application.EnableEvents = False
'Cancel Save
Cancel = True
'Do whatever code you need in here
'
'Mark Workbook as Saved, allowing for the file to close without an alert even if not saved
ThisWorkbook.Saved = True
'Send Escape Key to leave Save As Menu
Application.SendKeys "{ESC}", 1
'Enable Events
Application.EnableEvents = True
'Enable Alerts
Application.DisplayAlerts = True
End Sub
我的代码合并了用于保存文档的业务逻辑 (Excel 365),以确保正确的命名约定、文件位置等作为 Sub Workbook_BeforeSave
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True ''Cancels the Save from the button push or Ctrl+S
Application.EnableEvents = False
'' code code code
Application.EnableEvents = True
End Sub
问题是,如果文件以只读方式打开(大多数情况下)Excel 将提示“文件是只读的”(图 a)并转到另存为文件功能区中的屏幕(图 b)。在按下保存按钮之前,Workbook_BeforeSave
sub 不会启动。它也不会离开这个屏幕,即使在 sub 运行 之后也是如此。
有什么办法吗:
- 在只读提示符前...或者
- 编写一些代码以离开“另存为”屏幕?
MS Read-Only promt(图一) Save As Screen(图b)
非常感谢!
这不是一个完美的方法,但试试这个。 这将在按下保存按钮后完全取消保存,您可以添加自己的保存代码。
编辑:刚意识到下面的代码不会停止只读警报,但是当您单击“保存”时,它会取消“保存”并关闭“另存为”菜单。但是,当他们使用 Ctrl+S 时,发送键 {ESC} 会触发 Ctrl+ESC 打开星形菜单...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Disable Read Only Alert
Application.DisplayAlerts = False
'Disable Events
Application.EnableEvents = False
'Cancel Save
Cancel = True
'Do whatever code you need in here
'
'Mark Workbook as Saved, allowing for the file to close without an alert even if not saved
ThisWorkbook.Saved = True
'Send Escape Key to leave Save As Menu
Application.SendKeys "{ESC}", 1
'Enable Events
Application.EnableEvents = True
'Enable Alerts
Application.DisplayAlerts = True
End Sub