将Excel作为OLE对象嵌入到MS Word中时显示错误

3
我已经为MS Excel和MS Word创建了一个VSTO。我正在尝试在我的Word文档中嵌入Excel的OLE对象。对于新文档,这对我有用。现在我将此文档保存在硬盘上的某个位置(例如C:\ drive)。现在我正在尝试从“文件” ->“打开”中打开该Word文档。现在当我双击表格中的Excel OLE对象时,它会显示以下消息...enter image description here我认为我的VSTO没有问题。我已禁用了我的VSTO,并遵循相同的过程。但再次失败了。是否有人曾经成功地尝试过这样做?请帮助我提供示例代码。
3个回答

4

请将所有Application_Workbook代码用try-catch-finally括起来,并释放工作簿对象。

例如:

void Application_WorkbookOpen(Excel.Workbook Wb) { 
    try {
        // Do Stuff
    } catch (Exception) {
        // Probably Eat it
    } finally {
        Marshal.ReleaseComObject(Wb);
    }
 }

以下是参考链接,介绍了VSTO和COMOLE相关内容:

https://theofficecontext.com/2012/10/09/vsto-and-comole/


@BaummitAugen,我做了一些更改,请重新评估我的答案。 - Peter Vanleeuwen
现在看起来好多了,谢谢。 (顺便说一下,不是我投的反对票,因为我缺乏领域知识来对这个答案进行投票。) - Baum mit Augen
我似乎无法完全按照上述描述让它正常工作。如果我从Workbook Open处理程序中释放我已经访问的所有COM对象,则可以正常工作。不过,有一些例外。例如,通过CustomDocumentProperties运行,如果我释放自定义属性列表,则可以正常工作。但是,如果有CustomDocumentProperties并且我遍历它们,并尝试释放每个DocumentProperty,则无法正常工作。有什么建议吗? - Jihad Haddad


1

当你在Word中嵌入Excel时,你会遇到一个常见的问题,这是由于插件引起的。解决此问题的一种方法是在你的插件(包括Word和Excel)中取消所有应用程序和文档事件的挂钩,例如文档打开。同时禁用任何第三方安装的插件,并检查是否解决了问题。


嗨Brijesh Mishra,感谢您的回复。我还很陌生这个领域,能否请您告诉我如何取消所有应用程序和文档事件的挂钩?我已经禁用了这里安装的所有第三方VSTO。 - Ankit Prajapati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接