Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Убрать запрос о сохранении и закрыть без сохранения
 
Здравствуйте. Помогите пожалуйста убрать запрос о сохранении скрытой книги PERSONAL.XLSB.
Дело в том, что при выполнении определенного макроса в книге, вносятся изменения в скрытую книгу (PERSONAL.XLSB), и надо чтобы при закрытии активной книги (видимой, с которой в данный момент работаю и вместе с которой закрывается скрытая PERSONAL.XLSB), не выдавался запрос: "Сохранить внесенные изменения в личной книге макросов?" и просто закрывалась без сохранения.
Знаю про модуль ЭтаКнига и процедуру: Private Sub Workbook_BeforeClose(Cancel As Boolean), но это работает при непосредственном закрытии активной книги. А мне надо чтобы скрытая PERSONAL.XLSB закрывалась вместе с последней рабочей книгой (ну как обычно), но без сохранения и запросов. Надеюсь изложил понятно.
Спасибо.
 
Если закрываете PERSONAL кодом, то достаточно:
Workbooks("PERSONAL.xlsb").Close 0

Если по каким-то причинам не помогает, то отключите сообщения, но не забывайте их включить обратно:
Код
Application.Displayalerts = 0
Workbooks("PERSONAL.xlsb").Close 0
Application.Displayalerts = 1
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, не помогает, запрос все равно появляется.
 
Попробуйте еще так:
Код
with Workbooks("PERSONAL.xlsb").
  .saved=-1
  .Close
end with
Я сам - дурнее всякого примера! ...
 
KuklP, не получается.
Я вообще правильно делаю?
Вписываю этот код в процедуру "Private Sub Workbook_BeforeClose(Cancel As Boolean)" модуля книги PERSONAL.XLSB.
 
Вы закрываете PERSONAL.XLSB как?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, он закрывается автоматом при закрытии любой последней рабочей книги.
 
По сути это закрытие приложения уже, а не книги. Это разные вещи. и Application.Displayalerts = 0 должно помочь, но только если закрытие идет кодом. Или на закрытие PERSONAL попробуйте это прописать.
Лично мне непонятно зачем вносить изменения в PERSONAL, если затем их не сохранять? не проще создать для этого новый лист или книгу, делать их скрытыми и затем удалять?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, На листе PERSONAL.XLSB, находятся формы документов, которые заполняются макросом данными из активной раб.книги для дальнейшей распечатки. И после распечатки и закрытии активной раб.книги, нужно чтобы приложение закрывалось без вопросов. Неужели никак нельзя сделать?
 
В таких случаях лучше использовать не PERSONAL.XLSB, а надстройку, в которой и хранить шаблоны и коды. Тогда и вопросов лишних не будет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В модуль книги персонал, в самое начало:
Код
Private WithEvents App As Application 
Private Sub App_WorkbookBeforeClose(ByVal wb As Workbook, Cancel As Boolean)
    Workbooks("personal.xls").Saved = -1
End Sub
Сохраните книгу принудительно из редактора VBE. Все.
Я сам - дурнее всякого примера! ...
 
KuklP, не помогает, к сожалению.
Цитата
The_Prist пишет:
В таких случаях лучше использовать ... надстройку...
Надстройки пока не умею делать.
 
Цитата
...не помогает, к сожалению.
У меня работает и в 2003 и 2010. Сейчас проверил - и в 2007 работает.
Вы в строке
Код
Workbooks("personal.xls").Saved = -1
расширение поменяли на свое?
Изменено: KuklP - 21 Июл 2013 20:27:37
Я сам - дурнее всякого примера! ...
 
Да. Все равно не получается.
У меня тоже 2010, но запрос появляется. А Вы как проверяете?
Я делаю намеренно изменение в персонал и закрываю не сам персонал, а запущенную мной др. книгу, которая и закрывает персонал.
 
Так же проверяю - нет никакого запроса.
Цитата
VISXAN пишет:
закрываю не сам персонал, а запущенную мной др. книгу, которая и закрывает персонал.
Даже если закрыть все открытые книги, останется пустое окно Экса. Я закрываю сам Эксель. Коллеги, проверьте, плиз и отпишитесь - как у Вас.
Изменено: KuklP - 20 Июл 2013 22:08:59
Я сам - дурнее всякого примера! ...
 
Я тоже закрываю сам Эксель, запрос появляется.
 
Да у меня и моим кодом все без запросов закрывается.
Надстройку создать очень сложно :-)
Просто берете любой файл с кодом-Сохранить как- Надстройка. Все. Надстройка готова. Остается только подключить. Как подключить надстройку
Статью до конца прочитайте - там полная инструкции по подключению.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, так это мне надо просто personal сохранить как надстройку и подключить и все?
 
По сути да. Только дайте лучше имя, оличное от personal, на всякий случай.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Спасибо большое. По Вашему совету почитал про надстройки (как оказалось я про них почти ничего не знал), создал один с нужным мне листом, попробовал и все получилось даже без какого либо кода (не спрашивает о сохранении изменений).
И тогда у меня возникает вопрос. Зачем тогда нужен personal, когда все макросы можно хранить в надстройке?
И пользовательские функции можно использовать даже без ссылки на personal. Неплохо
Изменено: VISXAN - 21 Июл 2013 16:12:20
 
PERSONAL нужен простым пользователям, которые планируют всеми записанными макросами пользоваться из любой книги, не парясь над изучением надстроек и прочего - просто при записи макроса выбрав нужную книгу для хранения макроса. А надстройки это уже больше для разработчиков.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Читают тему (гостей: 1)
Наверх