Excel VBA: запретить сохранение книги — эффективные методы и примеры кода

Excel VBA предлагает различные методы предотвращения сохранения книг. Если вы хотите защитить конфиденциальные данные или обеспечить соблюдение определенных бизнес-правил, реализация этих методов может помочь сохранить целостность данных и предотвратить несанкционированные изменения. В этой статье мы рассмотрим несколько подходов, а также примеры кода, позволяющие предотвратить сохранение книг с помощью Excel VBA.

Метод 1: отключить параметры «Сохранить» и «Сохранить как»
Пример кода:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
    MsgBox "Saving is disabled for this workbook."
End Sub

Объяснение:
Используя событие Workbook_BeforeSave, мы можем отменить операцию сохранения и отобразить сообщение, информирующее пользователей о том, что сохранение отключено. Этот метод предотвращает как обычное сохранение, так и сохранение через диалоговое окно «Сохранить как».

Метод 2: защита структуры книги
Пример кода:

Private Sub Workbook_Open()
    With ThisWorkbook
        .Protect Password:="YourPassword", Structure:=True
    End With
End Sub

Объяснение:
Защитив структуру книги, вы можете запретить пользователям добавлять, удалять или изменять листы, тем самым косвенно не позволяя им сохранять любые внесенные изменения. Не забудьте заменить «ВашПароль» надежным паролем по вашему выбору.

Метод 3: установка атрибута только для чтения
Пример кода:

Private Sub Workbook_Open()
    ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
End Sub

Объяснение:
Установив для режима доступа к файлам книги значение «Только чтение», пользователи смогут открывать книгу только в состоянии только для чтения. Любые попытки сохранить книгу приведут к ошибке.

Метод 4. Скрытие кнопок «Сохранить» и «Сохранить как» на ленте
Пример кода:

Private Sub Workbook_Open()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", False)"
End Sub

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

Метод 5: сохранение в другое место
Пример кода:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
    ThisWorkbook.SaveAs "C:\Backup\MyWorkbook.xlsx"
    MsgBox "Saving to the original file location is disabled. The workbook has been saved to a backup location."
End Sub

Объяснение:
Отменив операцию сохранения и используя метод SaveAsдля сохранения книги в другом месте файла, вы можете предотвратить изменение исходного файла, сохраняя при этом резервную копию.