我有一个问题要在这里活跃社区活跃。
我试图拦截Excel工作簿打开事件。场景是这样的:
当用户在Windows资源管理器中双击工作簿时,在Excel中打开工作簿之前,如果他想打开工作簿或取消打开操作,我想向用户显示一个对话框。如果用户单击“是”打开工作簿,则工作簿将加载到Excel中,否则Excel窗口将为空。
此外,我想在用户实际可见之前捕获工作簿名称。
根据我的研究,我发现.xls与Excel应用程序相关联,Excel获取文件名并将其传递给DDE。 DDE加载文件和Workbook之间发生的事情之间的图片实际显示出来,对我来说并不是那么清楚。有没有办法在DDE加载和工作簿显示事件之间拦截任何东西?
所以我的问题是:
我们可以延迟加载Excel并在其间注入一些其他程序,这样我就可以在用户实际可见之前捕获工作簿的名称。
是否可以通过COM AddIn?
在这方面的任何帮助都会受到高度赞赏吗?
答案 0 :(得分:0)
this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpen);
void ThisAddIn_WorkbookNewWorkBook(Excel.Workbook Wb)
{
var result = MessageBox.Show("message", "caption",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.No)
Wb.Close();
//write here the code
}