如何在没有剪贴板的情况下在C#中复制Word中的范围



我使用Microsoft.Office.Interop.Word和此代码使用C#:复制Word文档的部分

var R1 = FindRange(Document);
R1.Copy();
var R2 = Document.Range(R1.End, R1.End);
R2.Paste();

范围部分包含各种元素,如段落和表格。这段代码基本上是复制/粘贴文档的部分,并且运行良好。

有没有其他方法可以在不使用Copy()Paste()函数的情况下获得与使用剪贴板相同的结果(这是一个大问题)?

我同意使用剪贴板是个坏主意。

下面是一个基于XML的示例,它将名为"Document2"的源文档中名为"bookmark"的书签的内容复制到当前的Selection范围。

void XmlDemo()
{
    var wordApp = Globals.ThisAddIn.Application;
    var docSource = wordApp.Documents["Document2"];
    var rngTarget = wordApp.Selection.Range;
    var rngSource = docSource.Bookmarks["bookmark"].Range;
    rngTarget.InsertXML(rngSource.XML);
}

我没有意识到它的局限性,但我只是测试了它,可以轻松地复制一些文本、表格和形状。

备选方案

如以下注释中所述,另一种选择是使用Range:的FormattedText属性

R2.FormattedText = R1.FormattedText;

最新更新