2010-09-02 270 views
29

我已經使用了以下但未成功。實際上,活動工作簿關閉,但excel窗口仍然打開。使用VBA關閉Excel應用程序

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

這是終止應用程序的命令?

編輯

多說一點:在打開工作簿時我運行宏。我想在宏完成時終止應用程序。我也嘗試過沒有成功。

Private Sub Workbook_Open() 
    Macro_MyJob 
    Application.Quit 
End Sub 

我應該在哪裏放這個Application.Quit命令?

回答

44

我認爲你的問題是在發送命令退出應用程序之前關閉調用宏的文檔。

在這種情況下,您的解決方案是不發送關閉工作簿的命令。相反,您可以將工作簿的「已保存」狀態設置爲true,這將繞過關於關閉未保存的書籍的任何消息。注意:這不會保存工作簿;它只是使它看起來像被保存。

ThisWorkbook.Saved = True 

然後,

Application.Quit 
4
Application.Quit 

應該這樣做。

+1

我應該把它放在哪裏? – Brani 2010-09-02 15:01:08

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

是的,模塊內的代碼效果更好。 – 2017-04-27 10:50:34

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 2017-02-13 11:34:06