我正在使用Delphi 2007的ExcelXP组件(如here所述)连接到MS Excel并填充工作表中的某些字段。这应该工作,我可以修改我想要的工作表。
但是,我希望Excel在应用程序结束后保持打开状态,但前提是Excel中有一个打开的工作表。我可以使用ExcelApplication.Workbooks.Count
获取已打开的工作簿的数量,因此在应用程序结束时检查是否打开任何工作簿并在OnDestroy
或类似期间关闭Excel将是一项简单的任务。 p>
现在,在我的应用程序结束时,无论是否有任何打开的工作簿,我都会陷入Excel关闭状态。不是由于任何.Disconnect
或.Quit
来电,当我全力以赴时,它仍会这样做;我的应用程序关闭后,Excel仍然会关闭。
如果有打开的工作簿,有没有人知道如何让Excel保持打开状态,如果没有打开工作簿则关闭它?
更新:我的TExcelApplication的AutoQuit
属性设置为True
。原来这就是问题所在。
答案 0 :(得分:2)
以下Deborah Pate's page向我建议,如果没有Delphi对象引用它,ExcelXP会自动关闭Excel。 MS Interop组件不是问题:
但请注意,除非您已发布所有工作簿和工作表变量,否则Excel将在内存中无处不在地运行。断开所有组件,将任何接口变量设置为nil,并将任何变量设置为Unassigned以防止这种情况发生。
答案 1 :(得分:2)
回答我自己的问题,我的同事注意到TExcelApplication组件有一个AutoQuit
属性。将其设置为False
,Excel保持打开状态。现在,我可以在OnDestroy
个事件中手动退出/断开Excel。