保存前不适用于另存为
Posted
技术标签:
【中文标题】保存前不适用于另存为【英文标题】:Before save does not work with save as 【发布时间】:2016-08-24 13:37:30 【问题描述】:我制作了一个宏来保护工作表并将工作表更改为工作表“A”,然后保存文件,然后返回到我开始使用的工作表。
很遗憾,当我的宏在工作簿中时,另存为选项不起作用。每当我单击另存为并想要搜索保存文件的位置时,宏就会开始运行,并禁用我尝试执行的操作。
这是我正在写的代码:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
Application.EnableCancelKey = XlEnableCancelKey.xlDisabled
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim aktywny As Worksheet
Set aktywny = ActiveSheet
For Each Sh In ThisWorkbook.Sheets
If InStr(Sh.Name, ".") <> 0 Then
If Sh.ProtectContents = False Then
Sh.Protect Password:="XXX", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True
End If
End If
Next
ThisWorkbook.Sheets("A").Activate
Me.Save
aktywny.Activate
ThisWorkbook.Saved = True
Cancel = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
【问题讨论】:
【参考方案1】:我猜是因为Cancel = True
。
您可能应该使用ByVal SaveAsUI As Boolean
标志来查看用户是否单击了“另存为”。
如果您根本不希望宏在“另存为”上运行,您可以将其放在方法的开头:
If SaveAsUI Then
Return
End If
【讨论】:
不过,每当我单击浏览以检查保存文件的位置时,宏都会运行,即使使用您的代码而不是 Cancel = true 很遗憾没有。我应该粘贴此代码而不是 Cancel = True 吗?这是我对代码所做的唯一更改。它在“返回”时中断。以上是关于保存前不适用于另存为的主要内容,如果未能解决你的问题,请参考以下文章