保存之前无法使用另存为

时间:2016-08-24 13:37:30

标签: excel vba excel-vba save before-save

我制作了一个保护工作表并将工作表更改为工作表“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 个答案:

答案 0 :(得分:2)

因为我猜Cancel = True

您应该使用ByVal SaveAsUI As Boolean标志来查看用户是否点击了&#34;另存为&#34;。

如果您不希望宏运行在&#34;另存为&#34;,您可以将其放在方法的开头:

If SaveAsUI Then
    Return
End If