Страницы: 1
RSS
Закрытие Excel через vba
 
Здравствуйте.Такой вопрос, можно ли через vba закрыть определённый (один) Excel?
Знаю что есть Application.Quit, но эта команда закрывает все Excel разом.
Ещё есть ThisWorkbook.Close, но эта команда тоже мне не подходит, ибо после её выполнения (если был открыт один Excel) рабочее поле Excel становиться просто серым и приходиться закрывать Excel вручную.
 
Цитата
dimon_ написал:
но эта команда закрывает все Excel разом.
Абсолютно не верно.
В данном случае существенное значение имеет, что понимается под
Цитата
dimon_ написал:
закрыть определённый (один) Excel?
И есть небольшой, но весьма существенный нюанс - в различных версиях Excel это делается совершенно различными способами.
 
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Workbooks.Count = 1 Then Application.Quit
End Sub
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
У меня Excel 2016, и я имею ввиду то, что если у меня открыто несколько приложений Excel я хочу выйти из одного определённого приложения Excel
 
dimon_, Такой вариант вас устроит?
Код
Application.DisplayAlerts = False
 Workbooks("ваша книга.xlsx").Close
Application.DisplayAlerts = True

Данный вариант закрывает книгу без сохранения.

Если сохранение необходимо, то убираем 1 и 3 строчки.

 
Цитата
egorkaqwerty написал:
Если сохранение необходимо,
Не совсем верно выразился, если убрать 1 и 3 строчки, то при закрытии файла будет выскакивать окошко с предложением сохранить.
 
Короче, есть книга, при её запуске происходит следующее: Application.Visible = False и запускается пользовательская форма
На этой форме есть кнопки, одна из них предназначена для добавления информации в другую книгу, по её нажатию скрытно открывается книга, заносится определённая информация, сохраняется, и вот тут мне нужно её закрыть(при этом всём я не закрываю саму пользовательскую форму), но если я закрываю её методом Workbooks("моя книга.xlsx").Close за пользовательской формой появляется Excel и рабочее поле у него белое[img]file:///D:/%D0%9A%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B0.jpg[/img]
Можно в принципе после закрытия книги, которая открывалась в скрытном режиме, обратно применить Application.Visible = False, но тогда получается, что Excel появляется на доли секунд и обратно пропадает, а я хочу чтобы не происходило таких, так сказать, "мерцаний", так же не помогает Application.ScreenUpdating = False если вставить её до Workbooks("моя книга.xlsx").Close

P.S. Не знаю как сюда заливать картинки, надеюсь у вас она отображается)
Изменено: dimon_ - 16.01.2020 17:05:21
 
Это край. День лунтиков по ходу.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
Страницы: 1
Наверх