2011-01-20 64 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