应用程序结束后保持Excel打开(Delphi Automation)

时间:2013-03-20 09:47:23

标签: excel delphi ms-office ole delphi-2007

我正在使用Delphi 2007的ExcelXP组件(如here所述)连接到MS Excel并填充工作表中的某些字段。这应该工作,我可以修改我想要的工作表。

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

现在,在我的应用程序结束时,无论是否有任何打开的工作簿,我都会陷入Excel关闭状态。不是由于任何.Disconnect.Quit来电,当我全力以赴时,它仍会这样做;我的应用程序关闭后,Excel仍然会关闭。

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

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

2 个答案:

答案 0 :(得分:2)

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

  

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

答案 1 :(得分:2)

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