Word与c#的互操作-在书签中插入多个文件

本文关键字:插入 文件 书签 互操作 Word | 更新日期: 2023-09-27 18:04:00

我有一个主文档,我想在其中插入一些文件。这些应该在文档中间的某个点依次插入到文件中。

所以我在这里创建了一个名为"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");

但是这会删除书签,使得无法在同一点插入第二个文件。我不介意丢失书签,但只有在我插入了所有文件之后。

这能做到吗?我猜上面的代码用书签替换了范围,所以找到之前或之后的位置,然后删除书签范围将是最好的-但我就是找不到它的代码。我所尝试的一切似乎都取代了整个文档。

或者,有没有办法在没有互操作的情况下做到这一点(即通过解析文件-根本不接触MS Word)?

Word与c#的互操作-在书签中插入多个文件

文档的设置方式和书签的确切范围必须有一些特别之处,因为我能够在不丢失书签的情况下使其工作。根据这篇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