我已经为MS Excel和MS Word创建了一个VSTO。我正在尝试在我的Word文档中嵌入Excel的OLE对象。对于新文档,这对我有用。现在我将此文档保存在硬盘上的某个位置(例如C:\ drive)。现在我正在尝试从“文件” ->“打开”中打开该Word文档。现在当我双击表格中的Excel OLE对象时,它会显示以下消息...
我认为我的VSTO没有问题。我已禁用了我的VSTO,并遵循相同的过程。但再次失败了。是否有人曾经成功地尝试过这样做?请帮助我提供示例代码。
![enter image description here](https://istack.dev59.com/F7gug.webp)
请将所有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相关内容:
停止在插件中使用委托定义回调事件。使用IConnectionPoint
接口创建一个AdviseSink
。完成后,请使用Marshal.RCO清理RCWs。
以下是一些好的示例文章供参考:
一般知识阅读:
当你在Word中嵌入Excel时,你会遇到一个常见的问题,这是由于插件引起的。解决此问题的一种方法是在你的插件(包括Word和Excel)中取消所有应用程序和文档事件的挂钩,例如文档打开。同时禁用任何第三方安装的插件,并检查是否解决了问题。