Событие закрытия книги надстройки Excel в C#

Я делаю надстройку Excel COM. Теперь я хочу управлять событием WorkbookBeforeClose.
Но решение, которое я нашел в Stackoverflow (c# с использованием обработчика событий WorkbookOpen) не работает для меня.
В моей надстройке нет раздела InternalStartup, есть только раздел загрузки.
Я могу запустить обработчик событий только с помощью нажатие кнопки на панели ленты.
Когда я нажимаю кнопку 1 раз, обработчик событий делает то, что я хочу, все время загружается Excel.
Когда Excel закрывается и перезагружается, я должен снова нажать кнопку.
есть способ, которым обработчик событий запускается, когда Excel загружает первую пустую книгу???
Есть ли какая-то помощь или какое-либо решение для меня???

Спасибо и с уважением
Стефан

Вот мой код, который я использую для EventHandler:

public partial class Excel2SE  
{  
   Excel.AppEvents_WorkbookBeforeCloseEventHandler EventDel_BeforeBookClose;

private void Excel2SE_Load(object sender, RibbonUIEventArgs e)
{
   EventDel_BeforeBookClose = new Excel.AppEvents_WorkbookBeforeCloseEventHandler(BeforeBookClose);
}

private void btn_Start_Click(object sender, RibbonControlEventArgs e)
{
   wbEventhandlerStart();
}

private void wbEventhandlerStart()
{
   Excel.Application app = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
   app.WorkbookBeforeClose += EventDel_BeforeBookClose;
} 

// This Works when Excel Close
private void Excel2SE_Close(object sender, EventArgs e)
{
    MessageBox.Show("Excel close");
} 

// This works after Pushing the Start Button and the Workbook Close
private void BeforeBookClose(Excel.Workbook Wb, ref bool Cancel)
{
    MessageBox.Show("WB close");
} 

person Seapanther    schedule 04.11.2013    source источник


Ответы (1)


Является ли это надстройкой Visual Studio Office? Похоже, что это так, если это так, проверьте ThisAddIn.cs для следующих 2 методов:

private void ThisAddIn_Startup(object sender, EventArgs e)
{

}
private void ThisAddIn_Shutdown(object sender, EventArgs e)
{

}

Вы можете добавить код, который хотите запустить, рядом с методом ThisAddIn_Shutdown. Однако невозможно гарантировать, что этот код запустится, он запустится только в том случае, если пользователь закроет Excel «правильно». Если они закрываются с помощью диспетчера задач и т. д., все ставки отключены.

person JMK    schedule 04.11.2013