(我用英语一周,所以首先请原谅我的不好解释:D)
我通过我的应用程序打开一个excel文件。
我在Excel中有一个添加,并且在功能区按钮中进行保存(完全是保存按钮所执行的保存操作)按钮的Click事件代码是这里:
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保存按钮“SaveCopyAs”方法正常工作但单击我的自定义保存按钮“SaveCopyAs”方法不起作用。 (没有抛出异常,所有代码都已编译和调试)
答案 0 :(得分:1)
尝试使用try-catch
进行调试,它应该对您有所帮助。
// 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 2007 excel - 有时 - 在加载和保存方法时滞后或慢于正常。
简单的saveAs()
方法有很多参数(searh for it,你在msdn&这里也看到了它)并且它需要在路径上有些傻瓜,因为最新的保存路径更改为使用的C#保存路径。
我更喜欢SaveCopyAs
解决方案,因为只有一个参数和快速&狂怒。 :D