Страницы: 1
RSS
Отключение сохранения изменений
 
Добрый день! Была такая тема (Отключить закрытие книги крестиком) , решить задачу не удалось. Поставлю вопрос иначе. Как прописать в макросе так, чтобы при закрытии книги через крестик не появлялось окно Сохранить изменения? А по умолчанию изменения бы не сохранялись.
 
Просто используйте шаблон, формат файла xlts, xltm,xlt
Спасибо
 
Добрый день!
Код
' B модуль книги
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Close SaveChanges:=False
End Sub
Изменено: DANIKOLA - 06.11.2021 12:49:57 (Исправил код)
 
DANIKOLA,
может внутри нужно события отключить?
чтобы ThisWorkbook.Close не переполнил стек бесконечными рекурсивными вызовами Workbook_BeforeClose
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Ваша логика абсолютно правильная. Я просто проверил на практике и ошибки или зацикливания не обнаружил. Код выше исправлю.
---
Ігор Гончаренко, тут такое дело, ставлю Application.EnableEvents = False: ThisWorkbook.Close SaveChanges:=False: Application.EnableEvents = True и события не включаются обратно, при следующем открытии книги, если внести изменения в книгу с макросом при закрытии выдает вопрос "Сохранить изменеиния?", а без отключения событий работает нормально.
---
Цитата
Ігор Гончаренко написал:
вывод, что ThisWorkbook.Close из VBA не запускает стандартную процедуру закрытия файла с генерированием события "закрываемся"
Так вот, в окне Immediate запускаю ThisWorkbook.Close и событие закрытия файла срабатывает. Думаю эксель не успевает включить события обратно после ThisWorkbook.Close SaveChanges:=False
---
Да, ThisWorkbook.Saved = True работает на много лучше. Освойстве Saved.
Изменено: DANIKOLA - 06.11.2021 13:14:51 (Добавил ответ)
 
да, логику лучше проверять практикой
я обломился запустить эксперимент на реальном файле, именно по этому первое слово там "может"))
делаем вывод, что ThisWorkbook.Close из VBA не запускает стандартную процедуру закрытия файла с генерированием события "закрываемся", а просто закрывает файл и все
и опять же - этот вывод сделан без проверки на файле (всем кому интересно - могут проверить самостоятельно)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Добавьте в модуль книги:
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Me.Saved = True
End Sub

Формулировка "закрытие книги через крестик" - не удачна. Книга может закрываться и другим способом, например с помощью Ctrl+F4.
Владимир
 
Владимир, автор упорно просит "через крестик" ))
 
))
да настойчивость некоторых достойна уважения, особенно в случаях:
-- так нельзя!
--  ну и что? а мне-то нужно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Всем привет! В прошлой теме ТС написала:
Цитата
Поэтому мне закрытие крестиком не нужно принципиально
что противоречит начальному условию. Это только я увидел?  :)
 
И в то же время предыдущая тема:
Название: "Отключить закрытие книги крестиком"
В сообщении: "...чтобы нельзя было Кингу закрыть через крестик"

Складывается впечатление, что иных способов закрытия книги автор просто не знает )
 
Цитата
написал:
' B модуль книги

Спасибо, DANIKOLA, то что нужно!
Цитата
написал:
что противоречит начальному условию. Это только я увидел?  
А я и не отрицаю, что сейчас сформулировала задачу в другом контексте. _Igor_61, если вы не заметили, в прошлой теме задача так и не была решена, к сожалению. Поэтому и подумала, что если уж будут закрывать через крестик, то чтобы файл оставался неизменным, т.е. без сохранения изменений.
Цитата
написал:
Складывается впечатление, что иных способов закрытия книги автор просто не знает )
Уверяю Вас, Юрий М, автор знает и другие способы)) Но те, кто будут пользоваться файлом в дальнейшем - нет. Поэтому закрытие классическим способом попыталась отключить - не вышло.Тогда пусть хоть изменения не сохраняются. Просто в файле есть кнопка для закрытия файла и автоматического формирования Имени файла в зависимости от содержания конкретной ячейки и текущей даты
Страницы: 1
Наверх