Microsoft Word Interop:COMException

时间:2016-11-25 13:04:05

标签: c# .net ms-word com office-interop

我正在用c#编写一个程序,它截取屏幕截图并将它们粘贴到Microsoft Word模板(.dot)文件中的预定义书签上。

此代码在Microsoft Word 2007上正常工作,但在Microsoft Word 2016上随机失败。

我是通过以下代码行完成的:

// wdoc is a word document object
// bookMarkName is pre-defined in the code
wdoc.Bookmarks.get_Item(ref bookMarkName).Range.Paste();

代码在Word 2007上完美运行,但是当我在Word 2016上运行它时,它会运行一段时间,然后在上面的行中失败,显示以下错误:

System.Runtime.InteropServices.COMException (0x800A1066): Command failed at
Microsoft.Office.Interop.Word.Range.Paste()

如何让它适用于Word 2016?

1 个答案:

答案 0 :(得分:0)

在网上搜索了几个小时后,我找到了上述问题的解决方案,并且非常简单。

显而易见的问题是,Word 2016并未完全支持用于开发的Word 2007的Interop库。

因此,如果您正在制作使用Interop与Microsoft Office应用程序交互的程序,请使用不同版本的不同Interop库构建程序。如果程序自动使用目标系统上安装的Interop库会更好,因为这会使它独立于系统上安装的Microsoft Office版本,但是,就我在其上搜索而言,目前还不可能

如果您想知道如何为不同版本的Microsoft Office下载Interop库,我的建议是不要这样做,而是为每个版本的MS Office单独构建程序(通过构建它安装在安装了该版本MS Office的系统上,并为不同版本的Office分别分发程序。这样,用户可以根据他/她的系统上安装的MS Office版本选择下载相应版本的程序