我想用C#和Microsoft Excel執行以下操作:從C#啓動Excel並關閉「保存」
1 - 用戶選擇一個文件。
2 - Micorosft Excel顯示爲編輯該文件。
3 - 只要用戶點擊Excel的「保存」按鈕,Microsoft Excel應該關閉。用戶不必點擊退出。
關於#3的任何想法?
問候, 塞巴斯蒂安
我想用C#和Microsoft Excel執行以下操作:從C#啓動Excel並關閉「保存」
1 - 用戶選擇一個文件。
2 - Micorosft Excel顯示爲編輯該文件。
3 - 只要用戶點擊Excel的「保存」按鈕,Microsoft Excel應該關閉。用戶不必點擊退出。
關於#3的任何想法?
問候, 塞巴斯蒂安
此外,您可以使用FileSystemWatcher類來趕上保存的時刻,並殺死它的Excel。當然,如果你知道用戶必須保存文件的位置。
你可以處理Workbook
的BeforeSave
事件,然後運行檢查Saved
物業每十秒鐘,並關閉Excel中,如果它是true
一個計時器。
關閉Excel時應該小心,因爲如果關閉他們正在處理的(不同的)文件,用戶將非常生氣。
My Interop有點生疏,但我認爲有一個事件發生在Excel保存文件時觸發。
但是,我認爲這是一個非常危險的功能實現,因爲根據我的經驗,互操作性往往是有點不確定性:)。想象一下,如果當用戶在應用程序之外使用Excel時保存處理程序處於活動狀態,會發生什麼情況 - 他點擊保存,Excel消失!
您可以讓Excel宏處理BeforeSave
事件,取消用戶發起的保存,將文件保存在宏中,保存後您將存儲在宏中,然後關閉Excel。
因此,也許是這樣的:
Private Sub myBeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not HandlingBeforeSave Then
HandlingBeforeSave = True
Cancel = True
Me.Save
Application.Quit
End If
End Sub
This KB文章描述了從C#添加宏到Excel中。
您可以使用VSTO for Excel。使您能夠針對Excel對象模型編寫C#代碼。應該能夠做到你想要的。
雖然,SWeko有一個好點。您需要弄清楚如何確定它是否應該在保存時關閉。如果你不是每次保存都會關閉Excel。
我有一個類似的問題,但我等到用戶關閉Excel中。在Excel automation: Close event missing處查看我的「解決方案」。
我發現它在用戶點擊「保存」時關閉excel不知多少。如果您堅持「保存」事件,您可能希望在用戶保存後立即觀看文件元數據更改(例如,上次修改日期)。
你問如何做基本的Excel互操作或只#3? – SLaks 2010-06-17 13:47:04
我不是100%確定這是一個很好的工作流程。如果我(作爲用戶)執行1&2並開始編輯文件,會發生什麼情況。在完成我的編輯之前,我會召集會議,但我認爲「我可能會走一段時間,更好地保存」。我和巴姆! Excel關閉 - 不是我想要的。 – ChrisF 2010-06-17 13:49:42