我制作一个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");
}
答案 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时才会运行。如果他们使用任务管理器等关闭,则所有投注均已关闭。