Application.Quit command not closing the entire Excel Application
I have following code under a button. When clicked it just closes the current Excel sheet but not the entire Excel application.
Note: I don’t have any other sheets open.
The following window still appears.
12 Answers 12
I had this issue and I resolved it by putting in the Workbook_BeforeClose() :
remove the Application.DisplayAlerts = True from the routine.
from the help for Application.Quit Method :
If unsaved workbooks are open when you use this method, Microsoft Excel displays a dialog box asking whether you want to save the changes. You can prevent this by saving all workbooks before using the Quit method or by setting the DisplayAlerts property to False. When this property is False, Microsoft Excel doesn’t display the dialog box when you quit with unsaved workbooks; it quits without saving them.
This will avoid any (possibly hidden) prompts from stopping excel from closing completely
The window does not close because you are using personal.xlsb. Cut Personal.xlsb and paste in another location.
Instead of Personal.xlsb create and work on modules. It’s a better option.
«ThisWorkbook.Saved = True» after «Application.Quit» works on Excel 2016
I did not try it, but maybe this will help:
According to Norie you might not have anymore workbooks open, therefore Application.Quit will never be executed.
AlphaFrog therefore suggests this:
I had the same issue using the following code closed excel cleanly:
This will allow excel to cleanly close without keeping a «ghost» window open.
This worked for me: (Office 365)
When Application.Quit is encountered in a subroutine, it will only stay in memory and continue to run lines under it and will actually quit until it encounters a «Exit Sub». When the normal «End Sub» at the primary level is encountered, it will then also close Excel. But say if the workbook is somehow closed before reaching the «Exit Sub», «End» or «End Sub» line, then Excel will not close.
Solution is to create a Public variable called ToQuitNow with initial False value and change it to True where you want Excel to quit. and test right after to see if it is true, then return to previous Sub level by «Exit Sub» or «End» to quit right away, and do the same at every subrountine level where it is expected to return from the deeper subroutine. When it gets back to the primary level, then a final «Exit Sub» will actually terminates Excel. If you do not want Excel to ask for saving changes made, add line «ThisWorkbook.Saved = True» right after Application.Quit, or before the final «Exit Sub» at the Primary level and Excel will quit without saving.
Try the following test below, just run «Test»
This is a strange one, hopefully someone will find this answer useful. I ran into something very similar using Excel 2010 (14.0). I stumbled to my answer through experimentation. This is bad answer for general purpose.
For whatever reason Application.Quit fails silently if the option AccessVBOM is not enabled. It is not enabled out of the box and can be set/unset by your network admin by windows policy.
Since we all love code, in this example we are running Excel from C# interop and calling the quit function.
Application quit vba excel не закрывает приложение
Эксель не закрывается с кодом Application.Quit
Sobirjon
Дата: Понедельник, 09.03.2020, 14:56 | Сообщение № 1
Много чего не знаю.
Sobirjon
Дата: Вторник, 10.03.2020, 04:09 | Сообщение № 3
K-SerJC
Дата: Вторник, 10.03.2020, 09:27 | Сообщение № 4
Option Explicit Public trt As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean) If trt Then Exit Sub Application.DisplayFullScreen = False ActiveWindow.DisplayHeadings = True Application.DisplayFormulaBar = True trt = True If Workbooks.Count = 1 Then ThisWorkbook.Saved = True Application.Quit ThisWorkbook.Close False Else If Workbooks.Count = 2 Then If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then Workbooks(«PERSONAL.XLSB»).Close False ThisWorkbook.Saved = True Application.Quit trt = False End If Else ThisWorkbook.Close False End If End If End Sub
Option Explicit Public trt As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean) If trt Then Exit Sub Application.DisplayFullScreen = False ActiveWindow.DisplayHeadings = True Application.DisplayFormulaBar = True trt = True If Workbooks.Count = 1 Then ThisWorkbook.Saved = True Application.Quit ThisWorkbook.Close False Else If Workbooks.Count = 2 Then If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then Workbooks(«PERSONAL.XLSB»).Close False ThisWorkbook.Saved = True Application.Quit trt = False End If Else ThisWorkbook.Close False End If End If End Sub
Option Explicit Public trt As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean) If trt Then Exit Sub Application.DisplayFullScreen = False ActiveWindow.DisplayHeadings = True Application.DisplayFormulaBar = True trt = True If Workbooks.Count = 1 Then ThisWorkbook.Saved = True Application.Quit ThisWorkbook.Close False Else If Workbooks.Count = 2 Then If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then Workbooks(«PERSONAL.XLSB»).Close False ThisWorkbook.Saved = True Application.Quit trt = False End If Else ThisWorkbook.Close False End If End If End Sub
Sobirjon
Дата: Вторник, 10.03.2020, 14:21 | Сообщение № 5
[/vba]завершает макрос, но приложение остается по прежнему.
Протестировал вот так: [vba]
Private Sub Workbook_BeforeClose(Cancel As Boolean) With Application .DisplayFullScreen = False .DisplayFormulaBar = True .DisplayAlerts = False End With
‘ ActiveWorkbook.Close True ‘ Application.Quit End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.DisplayAlerts = False Cancel = True End Sub
Private Sub Workbook_Open() Application.DisplayFullScreen = True End Sub
[/vba]завершает макрос, но приложение остается по прежнему.
Протестировал вот так: [vba]
Private Sub Workbook_BeforeClose(Cancel As Boolean) With Application .DisplayFullScreen = False .DisplayFormulaBar = True .DisplayAlerts = False End With
‘ ActiveWorkbook.Close True ‘ Application.Quit End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.DisplayAlerts = False Cancel = True End Sub
Private Sub Workbook_Open() Application.DisplayFullScreen = True End Sub
[/vba]завершает макрос, но приложение остается по прежнему.
Протестировал вот так: [vba]
Private Sub Workbook_BeforeClose(Cancel As Boolean) With Application .DisplayFullScreen = False .DisplayFormulaBar = True .DisplayAlerts = False End With
‘ ActiveWorkbook.Close True ‘ Application.Quit End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.DisplayAlerts = False Cancel = True End Sub
Private Sub Workbook_Open() Application.DisplayFullScreen = True End Sub
K-SerJC
Дата: Среда, 11.03.2020, 12:59 | Сообщение № 6
Option Explicit Public trt As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean) If trt Then trt = False: Cancel = True: Exit Sub Application.DisplayFullScreen = False ActiveWindow.DisplayHeadings = True Application.DisplayFormulaBar = True trt = True If Workbooks.Count = 1 Then ThisWorkbook.Saved = True Application.Quit Else If Workbooks.Count = 2 Then If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then Workbooks(«PERSONAL.XLSB»).Close False ThisWorkbook.Saved = True Application.Quit trt = False End If Else End If End If ThisWorkbook.Saved = True End Sub
Private Sub Workbook_Open() Application.DisplayFullScreen = True End Sub
событие Workbook_BeforeClose запускается когда вы уже закрываете эту книгу еще раз в нем вызывать закрытие книги не требуется это будет выполнено по завершению этой процедуры.
переменная trt чтобы повторно событие не запустилось.
Option Explicit Public trt As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean) If trt Then trt = False: Cancel = True: Exit Sub Application.DisplayFullScreen = False ActiveWindow.DisplayHeadings = True Application.DisplayFormulaBar = True trt = True If Workbooks.Count = 1 Then ThisWorkbook.Saved = True Application.Quit Else If Workbooks.Count = 2 Then If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then Workbooks(«PERSONAL.XLSB»).Close False ThisWorkbook.Saved = True Application.Quit trt = False End If Else End If End If ThisWorkbook.Saved = True End Sub
Private Sub Workbook_Open() Application.DisplayFullScreen = True End Sub
событие Workbook_BeforeClose запускается когда вы уже закрываете эту книгу еще раз в нем вызывать закрытие книги не требуется это будет выполнено по завершению этой процедуры.
переменная trt чтобы повторно событие не запустилось. K-SerJC
Благими намерениями выстелена дорога в АД.
Option Explicit Public trt As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean) If trt Then trt = False: Cancel = True: Exit Sub Application.DisplayFullScreen = False ActiveWindow.DisplayHeadings = True Application.DisplayFormulaBar = True trt = True If Workbooks.Count = 1 Then ThisWorkbook.Saved = True Application.Quit Else If Workbooks.Count = 2 Then If Workbooks(1).Name = «PERSONAL.XLSB» Or Workbooks(2).Name = «PERSONAL.XLSB» Then Workbooks(«PERSONAL.XLSB»).Close False ThisWorkbook.Saved = True Application.Quit trt = False End If Else End If End If ThisWorkbook.Saved = True End Sub
Private Sub Workbook_Open() Application.DisplayFullScreen = True End Sub
событие Workbook_BeforeClose запускается когда вы уже закрываете эту книгу еще раз в нем вызывать закрытие книги не требуется это будет выполнено по завершению этой процедуры.
Application quit vba excel не закрывает приложение
добрый день, скажите как закрыть ексель (полностью выйти) с сохранением под таким же названием и без предупреждения скажите что в этом коде не так((((
добрый день, скажите как закрыть ексель (полностью выйти) с сохранением под таким же названием и без предупреждения скажите что в этом коде не так((((
Сообщение добрый день, скажите как закрыть ексель (полностью выйти) с сохранением под таким же названием и без предупреждения скажите что в этом коде не так((((
Команда Application.Quit не закрывает все приложение Excel
У меня есть следующий код под кнопкой. При нажатии он просто закрывает текущий лист Excel, но не все приложение Excel.
Примечание: у меня нет других открытых листов.
Следующее окно все еще появляется.
11 ответов
Мой вопрос таков: используя VBA в Excel 2013, как я могу изящно закрыть весь экземпляр Excel, когда пользователь решает, что он не хочет заполнять UserForm, и нажимает quit или cancel? В настоящее время, если пользователь нажимает кнопку Выйти или отменить, я проверяю, открыт ли только мой.
У меня была эта проблема, и я решил ее, вставив Workbook_BeforeClose() :
удалите Application.DisplayAlerts = True из процедуры.
из справки по Application.Quit Method :
Это позволит избежать каких-либо (возможно, скрытых) подсказок, препятствующих полному закрытию excel
«ThisWorkbook.Saved = True» после «Application.Quit» работает на Excel 2016
Окно не закрывается, потому что вы используете personal.xlsb. Вырезать Personal.xlsb и вставить в другое место.
Вместо Personal.xlsb создавайте и работайте над модулями. Это лучший вариант.
Я не пробовал, но, может быть, это поможет:
По словам Нори, у вас может больше не быть открытых рабочих книг, поэтому Application.Quit никогда не будет выполнен.
AlphaFrog поэтому предполагает следующее:
У меня была такая же проблема, используя следующий код closed excel чисто:
Это позволит excel чисто закрыться, не оставляя окно «ghost» открытым.
Это сработало для меня: (Office 365)
Я создал форму в excel 2017 году с кнопкой Cancel, но я не знаю, как закодировать ее так, чтобы она закрывалась при нажатии. Я нашел такие вещи, как Application.Quit, но это закрывает все.
У меня есть небольшой файл excel, который запускается приложением планирования каждые 15 минут. Функции в ячейках excel считывают данные из различных мест сети и хранят их в ячейках этого файла excel. Все это прекрасно работает. Затем код VBA сохраняет файл и выполняет Application.Quit. В.
Это странный вопрос, надеюсь, кто-то найдет этот ответ полезным. Я столкнулся с чем-то очень похожим, используя Excel 2010 (14.0). Я наткнулся на свой ответ, экспериментируя. Это плохой ответ для общего назначения.
По какой-либо причине Application.Quit завершается беззвучно, если опция AccessVBOM не включена. Он не включен из коробки и может быть установлен/снят вашим сетевым администратором с помощью политики windows.
Поскольку мы все любим код, в этом примере мы запускаем Excel из C# interop и вызываем функцию quit.
Прошли MacroName из файла bat и попробовали приведенный ниже код его работы. Но я заметил одну вещь: если мы закрываем книгу(ActiveWorkbook.Close) до Application.Quit, то она не работает.
Убедитесь, что на ваших листах нет ссылок на внешние ссылки, особенно на неработающие ссылки.
Я боролся с этой проблемой больше недели, переписывая и комментируя множество кода, чтобы попытаться изолировать проблему. Сегодня утром я наконец-то просмотрел все ссылки на таблицы и внешние листы в своей рабочей книге. Я удалил все ненужные ссылки и неработающие ссылки, и теперь книга закрывается, не зависая в памяти.
Похожие вопросы:
Использование Application.Quit в Excel VBA должно инициировать процедуру выхода по умолчанию, которая включает в себя запрос пользователю сохранить все несохраненные документы, открытые в данный.
У меня есть подменю Workbook_Open, которая делает некоторые вещи, а затем вызывает application.quit. Однако теперь, когда я добавил Это, как я могу отредактировать процедуру, учитывая, что excel.
У меня есть этот простой кусок кода в C# с GTK# : Main.cs : using System; using Gtk; namespace Apu< class MainClass< public static void Main(string[] args)< Application.Init(); new ShowForm();.
Мой вопрос таков: используя VBA в Excel 2013, как я могу изящно закрыть весь экземпляр Excel, когда пользователь решает, что он не хочет заполнять UserForm, и нажимает quit или cancel? В настоящее.
Я создал форму в excel 2017 году с кнопкой Cancel, но я не знаю, как закодировать ее так, чтобы она закрывалась при нажатии. Я нашел такие вещи, как Application.Quit, но это закрывает все.
У меня есть небольшой файл excel, который запускается приложением планирования каждые 15 минут. Функции в ячейках excel считывают данные из различных мест сети и хранят их в ячейках этого файла.
Я нашел похожие вопросы, но для других проблем кажется, что Excel вызывается из другого приложения, и процесс остается после закрытия приложения Excel. В моем случае у меня есть макрос в файле.
У меня есть проблема с момента обновления Excel 2016 года в версии 1712. Если мы делаем application.quit в макросе и не используем Excel GUI, Excel кажется закрытым, но процесс все еще жив. Если мы.
Я создал приложение запуска для пользователей базы данных, чтобы открыть переднюю часть конкретной базы данных. Например, пользователи открывают приложение запуска (которое является Access DB в.
Команда VBA Application.Quit не закрывает все приложение Excel
У меня есть следующий код под дном. Когда я щелкнул по нему, он просто закрывает текущий лист Excel, но не закрывает все приложение Excel.
Примечание: у меня нет других открытых листов
следующее окно по-прежнему появляется после закрытия вышеуказанного кода VBA.
6 ответов
У меня была эта проблема, и я решил ее, поместив в Workbook_BeforeClose() :
Удалить Application.DisplayAlerts = True от рутины.
от помощи для Application.Quit Method :
Если при использовании этого метода открыты несохраненные книги, Microsoft Excel отображает диалоговое окно с вопросом, хотите ли вы сохранить изменения. Это можно предотвратить, сохранив все книги перед использованием метода Quit или установив для свойства DisplayAlerts значение False. Если это свойство имеет значение False, Microsoft Excel не отображает диалоговое окно при выходе из несохраненных книг; он выходит без сохранения их.
Это предотвратит любые (возможно скрытые) запросы от остановки полного закрытия Excel
У меня возникла та же проблема, и я смог решить ее с помощью кода, который проверяет, открыты ли несколько книг или нет.
Окно не закрывается, потому что вы используете personal.xlsb. Вырежьте Personal.xlsb и вставьте в другое место.
Вместо Personal.xlsb создайте и работайте над модулями. Это лучший вариант.
Перешли MacroName из bat-файла и попробовали приведенный ниже код. Но я заметил одну вещь: если мы закрываем книгу (ActiveWorkbook.Close) перед Application.Quit, то она не работает.
Это странно, надеюсь, кто-то найдет этот ответ полезным. Я столкнулся с чем-то очень похожим, используя Excel 2010 (14.0). Я наткнулся на свой ответ через эксперименты. Это плохой ответ для общего назначения.
По какой-либо причине Application.Quit молча завершается сбоем, если опция AccessVBOM не включена. Он не включен «из коробки» и может быть установлен / отменен вашим сетевым администратором с помощью политики Windows.
Поскольку мы все любим код, в этом примере мы запускаем Excel из взаимодействия C# и вызываем функцию выхода.