使用COMAddIn延迟加载Excel

时间:2013-12-02 09:40:54

标签: com vsto visual-studio-addins excel-addins

我有一个问题要在这里活跃社区活跃。

我试图拦截Excel工作簿打开事件。场景是这样的:

当用户在Windows资源管理器中双击工作簿时,在Excel中打开工作簿之前,如果他想打开工作簿或取消打开操作,我想向用户显示一个对话框。如果用户单击“是”打开工作簿,则工作簿将加载到Excel中,否则Excel窗口将为空。

此外,我想在用户实际可见之前捕获工作簿名称。

根据我的研究,我发现.xls与Excel应用程序相关联,Excel获取文件名并将其传递给DDE。 DDE加载文件和Workbook之间发生的事情之间的图片实际显示出来,对我来说并不是那么清楚。有没有办法在DDE加载和工作簿显示事件之间拦截任何东西?

所以我的问题是:

  1. 我们可以延迟加载Excel并在其间注入一些其他程序,这样我就可以在用户实际可见之前捕获工作簿的名称。

  2. 是否可以通过COM AddIn?

  3. PS:人们可能会说这是一个重复的问题。但事实并非如此。

    在这方面的任何帮助都会受到高度赞赏吗?

1 个答案:

答案 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   
    }