Закрытие приложения Excel с использованием VBA - PullRequest
32 голосов
/ 02 сентября 2010

Я использовал следующее без успеха.Активная рабочая книга действительно закрывается, но окно Excel остается открытым.

Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False

Какая команда завершает приложение?

EDIT

Еще немного: В рабочей книге Open событие я запускаю макрос.Я хочу завершить приложение, когда этот макрос заканчивается.Я также попробовал это безуспешно.

Private Sub Workbook_Open()
   Macro_MyJob
   Application.Quit
End Sub

Куда поместить эту команду Application.Quit?

Ответы [ 8 ]

51 голосов
/ 02 сентября 2010

Я думаю, что ваша проблема в том, что он закрывает документ, который вызывает макрос, перед отправкой команды на выход из приложения.

Ваше решение в этом случае - не отправлять команду на закрытие книги. Вместо этого вы можете установить состояние «Сохранено» книги в значение «истина», что позволит обойти любые сообщения о закрытии несохраненной книги. Примечание: это не сохраняет рабочую книгу; это просто выглядит так, как будто оно сохранено.

ThisWorkbook.Saved = True

и затем сразу после

Application.Quit
8 голосов
/ 29 апреля 2013

Чтобы избежать появления приглашения «Сохранить», необходимо вставить эти строки

Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True

После сохранения работы вам необходимо использовать эту строку для выхода из приложения Excel

Application.Quit

Не просто помещайте эти строки в Private Sub Workbook_Open (), если у вас нет правильной проверки условий, иначе вы можете испортить свой файл Excel.

В целях безопасности создайте модуль для его запуска.Ниже приведены коды, которые я поставил:

Sub testSave()
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
End Sub

Надеюсь, это поможет вам решить проблему.

4 голосов
/ 02 сентября 2010
Application.Quit 

Должен сделать свое дело.

3 голосов
/ 06 января 2015
Sub TestSave()
Application.Quit
ThisWorkBook.Close SaveChanges = False
End Sub

Кажется, это работает для меня, хотя выглядит, как будто я закрываю приложение перед сохранением, но оно сохраняет ...

1 голос
/ 17 июля 2013

Я пробовал определенную последовательность, которая, кажется, работает, как вы можете видеть ниже:

ThisWorkbook.Saved = True
Application.Quit
Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False
0 голосов
/ 27 марта 2019

Вы можете попробовать

ThisWorkbook.Save
ThisWorkbook.Saved = True
Application.Quit
0 голосов
/ 07 июня 2018

В моем случае мне нужно было закрыть только одно окно Excel, а не все приложение, поэтому мне нужно было указать, какое именно окно нужно закрыть, не сохраняя его.

Следующие строки работают просто отлично:

Sub test_t()
  Windows("yourfilename.xlsx").Activate
  ActiveWorkbook.Close SaveChanges:=False
End Sub
0 голосов
/ 26 июля 2013
Sub button2_click()
'
' Button2_Click Macro
'
' Keyboard Shortcut: Ctrl+Shift+Q
'
    ActiveSheet.Shapes("Button 2").Select
    Selection.Characters.Text = "Logout"
    ActiveSheet.Shapes("Button 2").Select
    Selection.OnAction = "Button2_Click"
    ActiveWorkbook.Saved = True
    ActiveWorkbook.Save
    Application.Quit
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...