1

我正在使用 Delphi 2007 的 ExcelXP 组件,如此处所述连接到 MS Excel 并填充工作表中的一些字段。这可以正常工作,我可以随心所欲地修改工作表。

但是,我希望 Excel 在应用程序结束后保持打开状态,但前提是 Excel 中有打开的工作表。我可以使用 获取打开的工作簿的数量ExcelApplication.Workbooks.Count,因此在应用程序结束时检查是否打开了任何工作簿,并在此期间关闭 Excel 将是一项简单的任务OnDestroy

现在我被困在Excel关闭的情况下,无论我的应用程序结束后是否有任何打开的工作簿。不是由于任何.Disconnect.Quit电话,当我把它们全部拿出来时,它仍然会这样做;一旦我的应用程序关闭,Excel 仍然会关闭。

有没有人知道如果有打开的工作簿,我如何让 Excel 保持打开状态,并在没有工作簿时关闭它?

更新:AutoQuit我的 TExcelApplication 的属性设置为True. 原来这一直是问题所在。

4

2 回答 2

2

以下Deborah Pate 的页面向我建议,如果没有 Delphi 对象引用 ExcelXP,ExcelXP 会自动关闭 Excel。这不是 MS Interop 组件的问题:

但是请注意,除非您释放了所有工作簿和工作表变量,否则 Excel 将在内存中徘徊,不可见地运行。断开任何组件,将任何接口变量设置为 nil,并将任何变体设置为 Unassigned 以防止这种情况发生。

于 2013-03-20T09:56:11.990 回答
2

在回答我自己的问题时,我的同事注意到 TExcelApplication 组件有一个AutoQuit属性。将其设置为FalseExcel 保持打开状态。现在我可以在我的OnDestroy活动中手动退出/断开 Excel。

于 2013-03-20T10:00:21.247 回答