2010-09-02 4 views
29

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

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

Какая команда прекращает применение?

EDIT

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

Private Sub Workbook_Open() 
    Macro_MyJob 
    Application.Quit 
End Sub 

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

ответ

44

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

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

ThisWorkbook.Saved = True 

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

Application.Quit 
4
Application.Quit 

Должен сделать трюк.

+1

Куда это положить? – Brani

6

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

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 

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

+0

Да, код внутри модуля работает лучше. –

1

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

ThisWorkbook.Saved = True 
Application.Quit 
Application.ActiveWindow.Close SaveChanges:=False 
ActiveWorkbook.Close SaveChanges:=False 
-2
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 
2
Sub TestSave() 
Application.Quit 
ThisWorkBook.Close SaveChanges = False 
End Sub 

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

+0

Это сработало и для меня. Однако вам не хватает двоеточия до знака равенства, например: SaveChanges: = False – pylund

Смежные вопросы