Excel版本15(2013),在Windows 8中。
重现的步骤:
Excel对象被破坏并在后续COM消息上产生错误。
如果XLA之外还有一个打开的工作簿,一切正常。但如果XLA是唯一一本打开的书,那就失败了。
问题:这只是我,或者这是一个COM Excel服务器错误?
答案 0 :(得分:1)
看起来Excel GUI与该版本中引入的Excel COM服务器之间存在错位。
在旧版本中,服务器和GUI在最后一个工作簿关闭时的行为方式相同:只要在关闭上一本书之前可见,空GUI(即没有工作簿)仍然可见。
但是,此行为在版本15(或左右)中发生了更改,现在当您关闭最后一本书时,GUI将变为隐藏状态,而服务器则不会。这导致如果您的COM客户端在GUI可见时关闭最后一个工作簿,则服务器不会将其变为不可见,因此它将以某种方式获得不兼容的状态,这是不可能从GUI到达的。
当Excel更改GUI时,似乎已经引入了这个问题,因为它现在为每个工作簿分配了一个独立的窗口。
因此,解决方案是客户端确保在关闭最后一本打开的书时将GUI变为不可见。
如果您加载了加载项,这个问题似乎会更加严重。也许会发生什么是加载项(这是我的猜测)与一些隐藏窗口相关联,现在客户端必须修复的问题包括最后一本书的窗口(现已关闭)和与添加相关联的窗口 - 英寸