提示closures多次保存

我正在使用VS2008。 在我的应用程序中,从MMCpipe理单元中运行Excel 2003工作表(在Office 2007中),以便用户可以修改某些参数。

代码订阅了BeforeClosing事件,Window Deactivate和WindowActivate。 只有在用户selectclosuresExcel应用程序后,才会平稳地运行,并提示他保存文件是/否/取消,并且永远不会保存表单。 问题是我正在使用Workbook.Close()来closures该死的东西。 它的第一个参数是一个布尔,如果它是真的,它会每次都保存,从不假,在Type.missing它会在closures时再次提示。 因此,用户被提示一次(这个人只有取消function),然后他再次被Workbook.Close()提示保存(这有一个/没有function,但没有取消function – 即使你点击取消)。

不,我试图订阅BeforeSave事件,并试图把它放在beforeClose中,但它不会触发; 另外强制保存不是一个解决scheme,并跳过closures工作簿和杀死Excel(以避免工作簿closures)也不是一个解决scheme。

我也试图通过简单地释放与工作簿关联的com对象来避免workbook.close,但无济于事。

有一件事要注意,如果你点击文件保存,会出现一个对话框,告诉你如果你保存电子表格,某些function在Office 2003中可能不可用(这个额外的对话框可能是个问题吗?)

一个可能的解决scheme(我将作为最后的手段)将是closures压缩保存提示,并从代码(我可以控制一个对话框)激发自己的对话框,并阅读结果,并做相应的事情(我想要避免这种情况,因为它必须翻译成20多种语言,需要很多时间…)

如果您有任何想法,我将不胜感激。

解决了:

我的一个同事终于破解了它…显然有直接closuresExcel的一些问题,所以用一个基本的方法委托一个线程hibernate1秒,然后杀死Excel应用程序,它能够保存(如果它被要求由用户)并成功退出。

您也可以将Interactive属性设置为false。 这将防止XL显示任何对话框。