У меня есть код, который я поместил в Workbook_AfterSave и Workbook_BeforeSave. Это прекрасно работает и делает именно то, что я хочу;однако во время тестирования я обнаружил странную ситуацию, когда Excel не вызывает эти две функции при сохранении документа.
Если у меня открыт документ и я выбрал файл-> поделиться-> электронная почта-> отправить как вложениеЗатем Excel сохраняет мой документ и помещает его в сообщение электронной почты, никогда не вызывая Workbook_AfterSave и Workbook_BeforeSave (я подтвердил это, добавив всплывающее окно msgbox в Workbook_AfterSave и Workbook_BeforeSave, и оно определенно не всплывает при использовании отправки в виде приложения в Excel).
Итак, я копаюсь с Google, пытаясь выяснить, какие еще варианты могут понадобиться, чтобы исправить мою лазейку.
Справочная информация: мой код в Workbook_AfterSave и Workbook_BeforeSave скрывает вкладки, очень скрытыегде пользователь их вообще не видит. Пользователь может взломать книгу и просмотреть скрытые вкладки, используя это электронное письмо в качестве «функции» вложения.
Упрощение проблемы: создайте новую книгу без кода VBA, сохраните ее в виде файла .xlsm,Добавьте следующий код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "Before Save"
End Sub
Выберите файл-> поделиться-> электронная почта-> отправить как вложение. Обратите внимание, вы не получаете окно сообщения;однако, если вы внесли какие-либо изменения, они наверняка были сохранены =).