Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Excel. VBA. Сохранение файла при закрытии книги

Abram Pupkin Просветленный (20832), закрыт 1 год назад
Книга Эксель.
при закрытии книги, машина спрашивает "Сохранить изменения ?"
подскажите код, который закрывает, сохраняет и не спрашивает.
 Private Sub Workbook_BeforeClose(Cancel As Boolean)  
ThisWorkbook.Save ' принудительное сохранение перед закрытием
End Sub
этот код машина игнорирует
Лучший ответ
Сергей Мудрец (11498) 1 год назад
Абрам, добрый день.
Я взял ваш код, разместил в модуле книги, сохранил под определенным именем, открываю, вношу изменения, закрываю - изменения сохраняются.
https://cloud.mail.ru/public/besX/W9q9A3YWD
Abram PupkinПросветленный (20832) 1 год назад
блин !
грёбанные яблоки !
уже не первый раз ловлю палку в спицы
Сергей Мудрец (11498) Abram Pupkin, Подскажите, а как вы запись экрана делаете?
Остальные ответы
Alex Ivanov Просветленный (24316) 1 год назад
При стандартном закрытии файла код ВБА не будет срабатывать. Будут срабатывать внутренние правила операционной системы.
Вы поставили себе невыполнимую задачу
Abram PupkinПросветленный (20832) 1 год назад
какое закрытие (окончание работы) считается нестандартным ?
Alex Ivanov Просветленный (24316) Abram Pupkin, на крестике справа вверху, Alt+F4
Alex IvanovПросветленный (24316) 1 год назад
"Нестандартное", если, например, на листе Эксель будет кнопка завершения работы и к ней привязана функция ВБА
Abram Pupkin Просветленный (20832) Alex Ivanov, я могу на листе повесить 100500 кнопок и картинок и подключить запуск макроса. но для пользователя в лице бухгалтера эти кнопки "совершенно не нужны и только мешают работе" Она всё равно будет нажимать на красный крестик нужен макрос, который запускается при определенных событиях
Abram PupkinПросветленный (20832) 1 год назад
никак не получится.
скажите это вы знаете из практики , личного опыта, или учились, или работа связана с экселем ...?
Можно макросом ВБА вызвать команду операционной системы
а не могли бы вы привести конкретный пример
Alex IvanovПросветленный (24316) 1 год назад
Может я и ошибаюсь, но уверен по крайней мере на 99%.
Язык программирования VBA был создан для того, чтобы расширить внутренний функционал приложений Microsoft Office.
Знаю это как из теории, так и из многолетней периодической практики. (именно с ВБА сталкиваюсь нечасто, но периодически).
Для того, чтобы код ВБА работал, он должен быть запущен каким-либо образом.
То есть, если в УЖЕ ЗАПУЩЕННОМ макросе будет команда Close, то файл закроется (макрос вызвал команду операционной системы).
Но командой операционной системы нельзя активировать макрос.
Может я чего-то не понимаю, но вижу все именно так.
Евгений Prog.Z Мудрец (15303) 1 год назад
Application.DisplayAlerts = False
другие обрамления можно найти здесь
заголовок Отключение автоматической перерисовки экрана
Abram PupkinПросветленный (20832) 1 год назад
спасибо,
сейчас нет возможности, как-нибудь проверю
Похожие вопросы