Excel COM服务器BUG?

时间:2015-04-16 17:09:09

标签: excel com excel-automation com-automation

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

重现的步骤:

  1. 以编程方式打开Excel和XLA文件。
  2. 确保没有其他工作簿打开。
  3. 设置Excel.Application.Visible = True
  4. Excel对象被破坏并在后续COM消息上产生错误。

    如果XLA之外还有一个打开的工作簿,一切正常。但如果XLA是唯一一本打开的书,那就失败了。

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

1 个答案:

答案 0 :(得分:1)

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

在旧版本中,服务器和GUI在最后一个工作簿关闭时的行为方式相同:只要在关闭上一本书之前可见,空GUI(即没有工作簿)仍然可见。

但是,此行为在版本15(或左右)中发生了更改,现在当您关闭最后一本书时,GUI将变为隐藏状态,而服务器则不会。这导致如果您的COM客户端在GUI可见时关闭最后一个工作簿,则服务器不会将其变为不可见,因此它将以某种方式获得不兼容的状态,这是不可能从GUI到达的。

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

因此,解决方案是客户端确保在关闭最后一本打开的书时将GUI变为不可见。

如果您加载了加载项,这个问题似乎会更加严重。也许会发生什么是加载项(这是我的猜测)与一些隐藏窗口相关联,现在客户端必须修复的问题包括最后一本书的窗口(现已关闭)和与添加相关联的窗口 - 英寸