Application.Quit命令未关闭整个Excel应用程序

问题描述 投票:6回答:10

我在按钮下有以下代码。单击该按钮只会关闭当前的Excel工作表,而不是整个Excel应用程序。

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

注意:我没有打开其他工作表。

仍然出现以下窗口。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9NazVlei5qcGcifQ==” alt =“在此处输入图像描述”>

excel vba
10个回答
5
投票

我遇到这个问题,并通过输入Workbook_BeforeClose()解决了它:

ThisWorkbook.saved = true

-1
投票
请确保您的工作表没有任何外部链接引用,尤其是断开的链接。

1
投票

从例程中删除Application.DisplayAlerts = True

来自Application.Quit Method的帮助:

如果使用此方法时未保存的工作簿已打开,Microsoft Excel将显示一个对话框,询问您是否要保存更改。您可以通过在使用Quit方法之前保存所有工作簿或将DisplayAlerts属性设置为False来防止此问题。当此属性为[[False时,当您退出未保存的工作簿时,Microsoft Excel不会显示对话框。它退出而不保存它们。

这将避免任何(可能是隐藏的)提示阻止excel完全关闭

0
投票
由于您正在使用personal.xlsb,所以该窗口不会关闭。剪切Personal.xlsb并粘贴到另一个位置。

代替Personal.xlsb创建并使用模块。这是一个更好的选择。


0
投票
“ Application.Quit”在Excel 2016上运行后,[[“ ThisWorkbook.Saved = True”

Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.Quit ThisWorkbook.Saved = True End Sub


0
投票
我没有尝试过,但这也许会有所帮助:

https://www.mrexcel.com/forum/excel-questions/606195-vba-application-quit-not-working-me-completly-why.html

根据Norie,您可能不再打开工作簿,因此将永远不会执行Application.Quit。

[AlphaFrog因此建议:

Application.DisplayAlerts = False If Application.Workbooks.Count = 1 Then Application.Quit Else ActiveWorkbook.Close End If

0
投票
使用以下代码我同样遇到了问题,请完全关闭excel:

Application.DisplayAlerts = False ThisWorkbook.Save Application.Quit

这将使excel完全关闭,而无需保持打开“幽灵”窗口。 

0
投票
我遇到了相同的问题,并且能够使用看起来是否打开了多个工作簿的代码来解决此问题...

Application.EnableEvents = False Application.DisplayAlerts = False If Application.Workbooks.Count = 1 Then 'Close Excel application ThisWorkbook.Save Application.Quit Else 'Close the active workbook With ActiveWorkbook .Close Savechanges:=True End With End If


-1
投票
这很奇怪,希望有人会觉得这个答案有用。我在使用Excel 2010(14.0)时遇到了非常相似的问题。我偶然地通过实验找到了答案。对于一般用途,这是一个错误的答案。

无论出于何种原因,如果未启用AccessVBOM选项,Application.Quit都将以静默方式失败。它不是开箱即用的,可以通过Windows策略由网络管理员设置/取消设置。

您可以通过遍历“ Excel选项”->“信任中心”->“信任中心设置”->“宏设置”->“信任对VBA项目对象模型的访问,在GUI中找到此选项”。或programmatically

AccessVBOM

由于我们都喜欢代码,因此在此示例中,我们从C#interop运行Excel并调用quit函数。

using Excel = Microsoft.Office.Interop.Excel; using Marshal = System.Runtime.InteropServices.Marshal; Excel.Application app = new Excel.Application(); app.Visible = false; app.DisplayAlerts = false; // this will hang if AccessVBOM is not enabled app.Quit(); Marshal.ReleaseComObject(app);


-1
投票
已经从bat文件中传递了MacroName,并尝试了以下代码。但是我观察到的一件事是,如果我们在Application.Quit之前关闭工作簿(ActiveWorkbook.Close),则它不起作用。
© www.soinside.com 2019 - 2024. All rights reserved.