在应用程序结束后保持Excel打开(Delphi自动化)

我正在使用Delphi 2007的ExcelXP组件来连接到MS Excel,并在工作表中填充一些字段。 这是应该的,我可以修改所有我想要的工作表。

但是,我希望Excel在应用程序结束后保持打开状态,但前提是Excel中有打开的工作表。 我可以通过ExcelApplication.Workbooks.Count获取已打开的工作簿的数量,因此在应用程序结束时检查是否打开任何工作簿,以及在OnDestroy或类似工具中closuresExcel时,将是一件容易的事情。

现在我陷入了一种情况,即在Excelclosures的情况下,无论在应用程序结束时是否有打开的工作簿。 不是由于任何。 .Disconnect或者.Quit呼叫,当我把它们全部拿出来的时候,它仍然是这样的; 一旦我的应用程序closures,Excel仍然closures。

有没有人有任何想法,如果有开放的工作簿,我可以让Excel保持开放,并在没有开放的工作簿时closures它?

更新:我的TExcelApplication的AutoQuit属性被设置为True 。 事实certificate这是一直存在的问题。

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

下面的Deborah Pate的页面告诉我,如果没有Delphi对象引用它,ExcelXP会自动closuresExcel。 MS Interop组件不是问题:

但是请注意,除非您已经发布了所有的工作簿和工作表variables,否则Excel将在内存中闲逛,不可见地运行。 断开任何组件,将任何接口variables设置为零,并将任何变体设置为“未分配”以防止出现这种情况。