SaveCopyAs方法不起作用

(我是英文的一周,所以起初不好意思解释:D)

通过我的应用程序打开一个excel文件。

我有一个Excel中的Addd-In和一个function区中button来保存button的Click事件的代码(确切地说是一个保存button所做的保存操作)在这里:

Globals.ThisAddIn.Application.ActiveWorkbook.Save(); 

在我的应用程序中,我将一个方法(称为WorkbookBeforeSave)分配给工作簿的“BeforeSave”事件处理程序,在我的自定义目录中手动保存工作簿。

 private void WorkbookBeforeSave(bool saveasui, ref bool cancel) { _excelApp.EnableEvents = false;//_excelApp is my Excel Application if (!_excelWorkbook.Saved)//_excelWorkbook is Active Excel Workbook { _excelWorkbook.SaveCopyAs(_savedFilePath);//_savedFilePath is my custom directory _excelWorkbook.Saved = true; } cancel = true; _excelApp.EnableEvents = true; } 

问题是当我单击原始Excel保存button“SaveCopyAs”方法正常工作,但点击我的自定义保存button“SaveCopyAs”方法不起作用。 (没有抛出exception,所有代码编译和debugging)

尝试用try-catch进行debugging,它应该对你有帮助。

 // using interop, excel tool, interop-excel, core public void MyBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel) { //Globals.ThisAddIn.Application.ActiveWorkbook.SaveCopyAs(filename2); // if u use an external class to save (for threading or something else ) this.Application.ActiveWorkbook.SaveCopyAs(filename); } 

在没有线程/任务的情况下,Office Excel 2007有时甚至比正常情况下的负载和保存方法还要慢。

简单的saveAs()方法有很多参数(search它,你可以在msdn和这里看到它),并且它需要在path上发出一些响声,因为最新的保存path改变为C#使用的保存path。

我更喜欢SaveCopyAs解决scheme,因为只有一个参数,而且速度很快。 :d