1
我開發了一個使用VSTO(C#)的excel插件。另存爲C#中的事件
我希望知道在工作簿運行期間工作簿是'SAVED AS'。即。用戶正在對WBK 1執行一些操作,然後使用SAVE AS保存工作簿,然後重命名該工作簿並再次開始工作。在這種情況下,是否有可能捕獲「Worlbook SAve AS」事件?
我開發了一個使用VSTO(C#)的excel插件。另存爲C#中的事件
我希望知道在工作簿運行期間工作簿是'SAVED AS'。即。用戶正在對WBK 1執行一些操作,然後使用SAVE AS保存工作簿,然後重命名該工作簿並再次開始工作。在這種情況下,是否有可能捕獲「Worlbook SAve AS」事件?
Application.WorkbookAfterSave事件傳入一個名爲wb
的工作簿對象和一個名爲Success
的布爾值。
您可以從Workbook對象的FullName屬性中獲取保存的文件名。也許你可以在一個變量存儲初始名稱,並在AfterSave事件比較的名稱和位置,看是否另存爲已使用像這樣:
using Excel = Microsoft.Office.Interop.Excel;
using System;
namespace ExcelAddIn1
{
public partial class ThisAddIn
{
private string CurrentFullName { get; set; }
private event EventHandler SaveAs;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
CurrentFullName = this.Application.ThisWorkbook.FullName;
this.Application.WorkbookAfterSave += new Excel.AppEvents_WorkbookAfterSaveEventHandler(Application_WorkbookAfterSave);
SaveAs += new EventHandler(ThisAddIn_SaveAs);
}
void ThisAddIn_SaveAs(object sender, EventArgs e)
{
//Do What I want to do if saved as
}
void Application_WorkbookAfterSave(Excel.Workbook Wb, bool Success)
{
if (Wb.FullName != CurrentFullName)
{
CurrentFullName = Wb.FullName;
SaveAs.Invoke(null, null);
}
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
}
}
任何辦法解決這個問題呢? – Nikhil 2012-07-23 11:39:48