Excel COM服务器的BUG?

Excel版本15(2013),在Windows 8中。

重现步骤:

  1. 以编程方式打开Excel和XLA文件。
  2. 确保没有其他工作簿打开。
  3. 设置Excel.Application.Visible = True

Excel对象被破坏,并在随后的COM消息上产生错误。

如果除了XLA之外还有一个开放的工作簿,一切正常。 但是,如果XLA是唯一的开放书,它就会失败。

问题:这只是我,或者这是一个COM Excel服务器错误?

看起来在该版本中引入的Excel GUI和Excel COM服务器之间存在错位。

在较早的版本中,当最后一个工作簿被closures时,服务器和GUI的行为都是一样的:一个空的GUI(即没有工作簿)仍然可见,只要在closures最后一本书之前可见。

但是,这种行为在版本15(左右)中改变了,现在当closures最后一本书时,GUI变得隐藏,而服务器没有。 这会导致如果您的COM客户端在GUI可见时closures了最后一个工作簿,则服务器将不会将其隐藏,从而以某种方式获取不兼容的状态,这是从GUI无法实现的。

当Excel的GUI改变时,问题似乎已经被引入,现在它为每个工作簿分配一个独立的窗口。

因此,解决scheme是让客户在closures最后一本打开的书时确保GUI不可见。

如果你加载了一个加载项,这个问题似乎会加重。 也许会发生什么是插件(这是我的猜测)是关联一些隐藏的窗口,现在客户端必须解决的问题涉及到最后一本书(现在closures)的窗口和窗口关联到附加窗口,在。