2010-09-02 265 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