2015-01-21 3 views
0

У меня возникли проблемы с подключением моего Workbook_SheetChange обработчика событий к активной книге. Я пробовал несколько методов безрезультатно, он просто говорит, что моя книга или экземпляр Excel (xlApp) имеет значение null и выдает исключение.Обработчик событий не подключается к Active Workbook для COM Addin

Вот код:

private void createProject_Click(object sender, RibbonControlEventArgs e) 
    { 
     Excel.Application xlApp; 

     xlApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 

     exwb = (Excel.Workbook)xlApp.ActiveWorkbook; 

     MessageBox.Show(exwb.Name); 
     EventDel_CellsChange = new Excel.WorkbookEvents_SheetChangeEventHandler(narrator.Workbook_SheetChange); 
     xlApp.ActiveWorkbook.SheetChange += EventDel_CellsChange; 
    } 

Проблема заключается в последней строке и обратите внимание, я замещенные xlApp.ActiveWorkbook для exwb несколько раз

ответ

0

Возможно что-то пошло не так в создании приложения Excel. Marshal.GetActiveObject - не самый простой способ создать экземпляр Excel.Application. Попробуйте это вместо:

xlApp = new Excel.Application(); 
+0

@Drew: Это сработало для вас? –

+0

Приносим извинения за неясность, я хочу, чтобы мой код (обработчик событий) активировался и привязывался к событию workbook_sheetchange активной книги, после нажатия кнопки ленты. Поэтому в этом случае я пытаюсь захватить активный экземпляр excel и его активную книгу. – Drew2127

+0

Почему вы все это делаете? Вы не используете VSTO? –