Office Interop Word邮件合并抛出DISP_E_TYPEMISMATCHexception

我的问题涉及一个word文件,其中有一个embedded另一个公司的macros,我们必须删除,然后设置一个新的数据源path(xlsx电子表格)。 该macros必须被删除,因为它已经设置了当我们得到文件时不再可用的数据源。 现在我正在寻找一种可能性,以编程方式更改所述Word文件的数据源(path),但找不到任何只做VB代码的工作。 我们不想编写另一个macros并注入它,我们只想在用户下载文件之前更改数据源path。 我可以自由使用任何图书馆。

任何人都可以请build议我以编程方式更改word文件的数据源的方式?

更新:

我现在正在与MS Office Interop Word Library一起工作,实现了我正在寻找的(改变数据源),但不幸的是,Excel文件后来被破坏,无法打开“无效的数据格式”。

代码如下:

Application app = new Application(); Document officeDoc = app.Documents.Open(toBeMerged); var srcFile = @"C:\DataSource.xlsx"; FileInfo fileInfo = new FileInfo(srcFile) { IsReadOnly = false }; officeDoc.MailMerge.CreateDataSource(srcFile); officeDoc.Save(); officeDoc.Close(); app.Quit(); 

更新2

我已经设置了所有需要的参数。

  officeDoc.MailMerge.CreateDataSource(missing, missing, missing, missing, missing, missing, missing, missing, srcFile); 

参数如下:CreateDataSource(Name,PasswordDocument,WritePasswordDocument,HeaderRecord,MSQuery,SQLStatement,SQLStatement1,Connection,LinkToSource)

这将引发System.Runtime.InteropServices.COMException 0x80020005(DISP_E_TYPEMISMATCH)exception,但是单词被成功生成。 当我把srcFilevariables放在它应该属于的地方时,excel文件就像上面提到的那样损坏了,尽pipe给了所有的可选参数。

在此先感谢帮助我解决我的最后一个问题。