VSTO:无法打开另一个Excel文件,而第一个文件被加载项中的模式窗口阻止

我们无法打开另一个Excel文件,而第一个文件被我们的加载项中的模式窗口阻止。 closures对话窗口解除所有未决的文件打开。

Excel版本是2007.是否有一个编程工作,这将允许Microsoft Excel 2007在单独的窗口中打开第二个文件,而第一个窗口正在等待加载项退出模态对话窗口?

注意:这个行为似乎也适用于Excel自己的对话窗口。

不,这是Excel自动化服务器编写方式的架构限制。 只有一个线程为自动化队列提供服务 – 如果Excel位于调用堆栈的顶部,并且阻塞的任何内容都减less,则自动化服务器的新调用将排队,直到返回。

我目前正在升级我们的应用程序到Excel 2007和VS 2010(针对.NET 4.0),我注意到,如果你正在使用CustomTaskPane,它似乎在不同的线程上运行。 我有一个插件,创build一个任务窗格,启动一个模态窗体,并从该窗体中添加一个新的工作簿。 这似乎工作没有问题。 如果我直接从插件启动模态表单,我会遇到同样的问题。 我不确定这是否会在.NET 3.5或2.0中工作,但值得一试。 (更多关于CustomTaskPane: http : //msdn.microsoft.com/en-us/library/aa942864 (VS.100) .aspx )

只有我可以想到的选项是从插件中创build一个新的Excel.Application实例,并使用这个实例打开挂起的文件。 不理想,但作为其他答案说,这是产品的限制。 (EXCEL)