2011-01-20 66 views
1

我正在使用VS2008。在我的应用程序中,从MMC管理单元中运行Excel 2003工作表(在Office 2007中),以便用户可以修改某些参数。关闭多次提示保存

代码订阅了BeforeClosing事件,Window Deactivate和WindowActivate。只有在用户选择关闭Excel应用程序后,所有内容才能平稳运行,并提示他保存文件是/否/取消,并且永远不会/始终保存表单。问题是我正在使用Workbook.Close()来真正关闭该死的东西。它的第一个参数是一个bool,如果它是真的,它会每次都保存,永远不会返回false,并且在Type.missing它会在关闭时再次提示。因此,用户会被提示一次(这个人只有取消功能),然后他再次被Workbook.Close()提示保存(此人有/没有功能但没有取消功能 - 即使您点击取消)。

不,我已经尝试订阅BeforeSave事件,并试图把它放在beforeClose中,但它不会触发;强制保存也不是一个解决方案,并且跳过关闭工作簿并杀死excel(以避免工作簿关闭)也不是解决方案。

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

有一点需要注意,如果你点击文件 - 保存,会出现一个对话框,告知你,如果你保存电子表格的一些功能可能无法在Office 2003(可能是额外的对话框是一个问题吗?)可以

一个潜在的解决方案(我将作为最后的手段)将是在关闭时禁用保存提示并从代码(我可以控制的对话框)激发我自己的对话框并读取结果并相应地执行操作(我想避免这种情况,因为它必须翻译成20多种语言,并且需要很长时间...)

我对解决方案感到不知所措,如果您有任何想法,我将非常感激。

回答

1

解决:

我的一位同事终于解决了......显然有当direcly关闭Excel中,因此与委托线程的一个基本途径睡1秒钟,然后杀了Excel应用中的一些问题,它能够保存(如果它被用户请求)并成功退出。

+0

只需将答案标记为正确答案(是的,即使是你自己的答案)。这表明问题已解决的StackOverflow。 – GvS 2011-01-21 09:03:49

+1

我知道,我仍然需要等5个小时才能标出:) – rotSin 2011-01-22 12:48:59