2012-07-23 12 views
1

我開發了一個使用VSTO(C#)的excel插件。另存爲C#中的事件

我希望知道在工作簿運行期間工作簿是'SAVED AS'。即。用戶正在對WBK 1執行一些操作,然後使用SAVE AS保存工作簿,然後重命名該工作簿並再次開始工作。在這種情況下,是否有可能捕獲「Worlbook SAve AS」事件?

回答

4

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) 
     { 
     } 
    } 
} 
+0

任何辦法解決這個問題呢? – Nikhil 2012-07-23 11:39:48

相關問題