我有一个单词模板,其中一些段落需要重复programmitacaly。我尝试使用range.duplicate,但它不能完成这项工作。
现在,我有了这段代码:
document.Bookmarks["Experience"].Select();
Word.Range range = application.Selection.Range;
range.Copy();
range.Paste();
但它没有在documentum中插入任何内容。你能帮我吗?
答案 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();