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
для сохранения книги в другом месте файла, вы можете предотвратить изменение исходного файла, сохраняя при этом резервную копию.п>