Перед сохранением не работает с сохранением как

Я сделал макрос, который защищает лист и меняет лист на лист «А», затем сохраняет файл и после этого возвращается к листу, с которого я начал.

К сожалению, опция Сохранить как не работает, когда мой макрос находится в книге. Всякий раз, когда я нажимаю «Сохранить как» и хочу найти место для сохранения моего файла, макрос начинает работать и отключает действие, которое я пытался выполнить.

Это код, о котором я пишу:

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 

person Kuba    schedule 24.08.2016    source источник


Ответы (1)


Думаю, из-за Cancel = True.

Вероятно, вам следует использовать флаг ByVal SaveAsUI As Boolean, чтобы увидеть, нажал ли пользователь «Сохранить как».

Если вы не хотите, чтобы макрос вообще запускался при «Сохранить как», вы можете поместить это в начало метода:

If SaveAsUI Then
    Return
End If
person Hein Andre Grønnestad    schedule 24.08.2016
comment
Тем не менее, всякий раз, когда я нажимаю «Обзор», чтобы проверить место для сохранения файла, макрос запускается даже с вашим кодом вместо Cancel = true. - person Kuba; 24.08.2016
comment
К сожалению, нет. я должен вставить этот код вместо Cancel = True? Это было единственное изменение, которое я сделал в своем коде. При возврате ломается. - person Kuba; 24.08.2016