Страницы: 1
RSS
Закрытие Excel макросом без запроса о сохранении
 
Закрываю Excel так:  
 
ActiveWorkbook.Save  
Application.Quit  
 
появляется окно "Сохранить изменения в файле?"  
Как сделать, чтобы этот запрос не появлялся, а одним кликом сохранялся файл и закрывался Excel?
 
Не это ищете: Workbooks(имя).Close true Или активная книга
 
Нет, не это.  
Открыта всего одна книга и нажатием на кнопку нужно её сохранить и закрыть Excel.
 
А добавить Application.Quit
 
Sub TestClose()  
Application.Quit  
ActiveWorkbook.Close True  
End Sub  
Работает, как Вы и хотели.
 
Спасибо, Юрий!  
Но работает не так, как хотел.  
Пустое окно программы Excel всё-равно остаётся открытым.  
 
Это наверное, потому, что при закрытии выполняется ещё один макрос:  
 
Sub Workbook_BeforeClose(Cancel As Boolean)  
   Application.Run "ВосстановитьИнтерфейс"  
End Sub  
 
Как это можно обойти?
 
{quote}{login=Vlad}{date=23.01.2011 12:47}{thema=}{post}Пустое окно программы Excel всё-равно остаётся открытым.{/post}{/quote}  
У меня никаких пустых окон - всё закрывается.  
Попробуйте так:  
Sub Workbook_BeforeClose(Cancel As Boolean)  
Application.Run "ВосстановитьИнтерфейс"  
Call TestClose  
End Sub  
или непосредственно две строки из указанного макроса после Application.Run "ВосстановитьИнтерфейс"
 
Или (на кнопке) так:  
Sub TestClose()  
Application.Run "ВосстановитьИнтерфейс"  
Application.Quit  
ActiveWorkbook.Close True  
End Sub  
А в модуле книги удалить весь код.
 
Спасибо!  
Всё получилось!  
Немного, конечно, не удобно, когда при любом закрытии файла изменения всегда будут сохраняться без спроса. Но это ерунда.
 
Добавьте MsgBox, который спросит - сохранять или нет?
 
Да, Юрий, в последнем Вашем посте этого недостатка нет, зато при стандартном закрытии Excel крестиком не будет восстанавливаться интерфейс у последующих открываемых файлов.  
Всем запросам не угодить, либо то, либо это:)
 
А MsgBox куда добавить?  
В макрос "ВосстановитьИнтерфейс" (запускаемый при закрытии книги) при условии, если книга ещё не сохранена MsgBox есть, иначе нет.  
Как такое условие задать?
 
Попробуйте так:  
Sub TestClose()  
Application.Quit  
   If MsgBox("Сохранить данные", vbYesNo + vbQuestion, "Ваш выбор?") = vbNo Then  
     ActiveWorkbook.Close False  
  Else  
     ActiveWorkbook.Close True  
  End If  
End Sub
 
Спасибо, Юрий, ещё раз!  
Вроде разобрался.
Страницы: 1
Читают тему
Наверх