MS Word Interop to C# - 在书签中插入多个文件

时间:2013-03-13 20:56:42

标签: c# ms-word office-interop

我有一个主文档,我想插入一些文件。这些应该在文档中间的某个位置一个接一个地插入到文件中。

所以我在这一点创建了一个名为“TESTS”的书签,因为这似乎是以编程方式找到重点的最简单方法。

我可以使用以下代码插入单个文件:

 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)?

1 个答案:

答案 0 :(得分:0)

文档的设置方式以及书签的确切范围必须有一些特别之处,因为我能够在不丢失书签的情况下使其工作。根据此MVP文章Inserting text at a bookmark without deleting the bookmark,将文本添加到书签范围应该删除书签;也许你遇到与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