2012-08-07 113 views
3

我正在写一个Excel AddIn。它使用功能区其中某些控件根据工作簿的属性启用/禁用。活动时活动工作簿更改

要做到这一点,我想我应该更新功能区控件的状态,只要活动工作簿更改。

芯片皮尔逊的网站解释how to do it in VBAhere解释如何得到有效的Excel工作簿,但我不能在我的C#的AddIn来触发此事件。

+1

http://msdn.microsoft.com/en-us/library/office/aa168477(v=office.11​​).aspx – 2012-08-07 18:53:17

回答

1

添加以下代码ThisAddIn事件似乎需要时提高了。

void Application_ActiveWorkbookChanges(Excel.Workbook Wb) 
    { 
     // TODO: Active Workbook has changed. Ribbon should be updated.  
    } 

    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     this.Application.WorkbookActivate += 
      new Excel.AppEvents_WorkbookActivateEventHandler 
       (Application_ActiveWorkbookChanges); 
     this.Application.WorkbookDeactivate += 
      new Excel.AppEvents_WorkbookDeactivateEventHandler 
       (Application_ActiveWorkbookChanges); 
    } 
+0

解是基于[页](HTTP:// MSDN。 microsoft.com/en-us/library/office/aa168477(v=office.11​​).aspx)@TimWilliams和[这个早期的问题](http://stackoverflow.com/questions/7180318/c-sharp-使用-的事件处理程序,workbookopen)。 – 2012-08-07 19:48:05

+0

¿此解决方案是否足够有效? ¿是否有任何潜在的问题? – 2012-08-07 19:48:36