从C#启动Excel并closures它的“保存”

我想用C#和Microsoft Excel来完成以下工作:

1 – 用户select一个文件。

2 – Micorosft Excel显示编辑该文件。

3 – 只要用户点击Excel的“保存”button,Microsoft Excel应该closures。用户不必点击退出。

任何想法#3?

问候,塞巴斯蒂安

也可以使用FileSystemWatcher类来赶上保存的时刻,并杀死它的Excel。 当然,如果你知道用户必须保存文件。

您可以让Excelmacros处理BeforeSave事件,取消用户启动的保存,将文件保存在macros中,保存后您将会在macros中,然后closuresExcel。

所以可能是这样的:

 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 

这篇文章介绍了如何从C#中添加一个macros到Excel。

我的Interop有点生疏,但是我认为Excel保存文件时会触发一个事件。

但是,我认为这是一个非常危险的function,因为根据我的经验,互操作性往往有些不确定性。 想象一下,如果保存处理程序在用户在应用程序之外使用Excel时处于活动状态,将发生什么情况 – 他点击保存,Excel消失!

您可以使用VSTO for Excel。 使您能够针对Excel对象模型编写C#代码。 应该能够做到你想要的。

尽pipe如此,SWeko有一个好点。 你将需要弄清楚如何确定是否应该closures保存。 如果你不是每个保存都会closuresExcel。

您可以处理WorkbookBeforeSave事件,然后运行一个计时器,每隔十秒钟检查一次Saved属性,如果为true则closuresExcel。

closuresExcel时应该小心,因为如果closures他们正在处理的(不同的)文件,用户将非常生气。

我有一个类似的问题,但是我等到用户closuresExcel。 在Excel自动化中查看我的“解决scheme” :closures事件丢失 。

当用户点击“保存”时,我觉得closuresexcel是不直观的。 如果您坚持“保存”事件,您可能希望在用户保存后立即观察文件元数据更改(例如,上次修改date)。