MS Word中互操作,以C# - 插入多个文件书签(MS Word Interop to C# -

2019-10-17 20:13发布

我到了我要插入一些文件中的一个主控文档。 这些应该在文件中间的某个点被插入到相继的文件之一。

于是,我建立在这一点上所谓的“测试”书签,因为这似乎是编程找到的最简单方法。

我能够使用这个代码中插入一个文件:

 Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
 Microsoft.Office.Interop.Word.Document oWordDoc = oWord.Documents.Open(@"C:\master.doc");
 oWordDoc.Bookmarks.Cast<Bookmark>().First(b => b.Name == "TESTS").Range.InsertFile(@"C:\test1.doc");

但这删除书签,使其无法在同一点插入第二个文件。 我不介意丢失书签,但只有一次,我已插入的所有文件。

可以这样做? 我猜测,上面的代码替换范围与书签之前或之后,所以找到位置,然后删除书签范围将是最好的 - 但我只是无法找到它的代码。 我曾尝试一切似乎都更换整个文档。

另外,有没有办法做到这一点不通过Interop(通过解析文件,即 - 没有感人的MS Word的话)?

Answer 1:

必须有关于您的文档设置方式和书签的确切范围什么特别的事,因为我能得到这个不失书签工作。 根据这个MVP文章插入在书签文本而不删除书签 ,添加文本到书签的范围应该删除书签; 也许你正在运行与的insertFile类似的问题。

试试自己的存储书签的范围为变量即建议MyRange ,然后调用Bookmarks.Add "mybookmark", MyRange

Dim BMRange As Range 

Set BMRange = ActiveDocument.Bookmarks("MyBookmark").Range 
BMRange.Text = "Hello world" 

ActiveDocument.Bookmarks.Add "MyBookmark", BMRange


文章来源: MS Word Interop to C# - Inserting multiple files at a bookmark