C#Word Interop中的重复范围

时间:2018-02-09 13:56:35

标签: c# ms-word office-interop

我有一个单词模板,其中一些段落需要重复programmitacaly。我尝试使用range.duplicate,但它不能完成这项工作。

现在,我有了这段代码:

        document.Bookmarks["Experience"].Select();
        Word.Range range = application.Selection.Range;

        range.Copy();
        range.Paste();

但它没有在documentum中插入任何内容。你能帮我吗?

1 个答案:

答案 0 :(得分:1)

问题在于两个范围是相同的。这就像当您使用鼠标或键盘在文档中工作时:如果您有选择并粘贴,您粘贴的内容将替换所选内容。为了使一个跟随另一个,您首先需要按右箭头键或单击某处。

因此,您需要指定第二个范围(例如文档的末尾或其他书签),或者如@HansPassant注释中所建议的那样,“折叠”范围(例如按箭头键)。

要记住的另一件事是,如果可能的话,你不应该使用剪贴板。 Word中的替代方法是使用FormattedRange来传输已下载的内容。下面的示例代码显示了两种变体。

    //Possibility 1:
    Word.Range rangeSource = document.Bookmarks["Experience"].Range;
    Word.Range rangeTarget = rangeSource.Duplicate();
    rngTarget.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
    rngTarget.FormattedText = rngSource.FormattedText;

    //Possibility 2:    
    Word.Range rangeSource = document.Bookmarks["Experience"].Range;
    rangeSource.Copy();
    rngSource.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
    rangeSource.Paste();
相关问题