c#excel addin工作簿关闭事件

时间:2013-11-04 15:14:06

标签: c# excel add-in

我制作一个Excel COM加载项。 现在我想控制WorkbookBeforeClose事件 但我在Stackoverflow(c# using the event handler WorkbookOpen)上找到的解决方案不适用于我 在我的加载项中没有InternalStartup Sektion,只有一个Load Sektion 我只能通过在功能区栏中按下按钮来启动Eventhandler 当我按下按钮1x时,事件处理程序执行我想要的所有时间Excel加载 当Excel关闭并重新启动时,我必须再次按下按钮 有没有一种方法,当Excel加载第一个空的工作簿时,Eventhandler正在启动??? 是否有一些帮助或任何解决方案???

谢谢和问候 斯蒂芬

这是我用于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");
} 

1 个答案:

答案 0 :(得分:1)

这是Visual Studio Office加载项吗?这听起来像是,如果是这样,请检查ThisAddIn.cs以获得以下两种方法:

private void ThisAddIn_Startup(object sender, EventArgs e)
{

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

}

您可以在 ThisAddIn_Shutdown 方法附近添加要运行的代码。没有办法确保此代码运行,但只有在用户“正确”关闭Excel时才会运行。如果他们使用任务管理器等关闭,则所有投注均已关闭。