将模板文档复制到活动文档

Copying template doc to active doc

我正在为 Word 制作 Office 插件。使用 Microsoft.Office.Interop。我有几个 .dotm 文件(模板)。按下按钮时,我需要将所有文本从一个 .dotm 复制到我的活动文档中。我不知道如何将活动文档放入变量中。所以我可以插入信息。

我尝试了几种方法。现在我试图从那里打开 .dotm 复制文本,然后将其粘贴到我的活动文本中。但它不起作用。 Word 将毫无错误地开始(从 Visual Studio 开始),然后当我按下按钮时,它告诉我没有关于此的打开文档:var MyDoc = app.ActiveDocument;

1)

private void Button1_Click(object sender, RibbonControlEventArgs e)
        {
            var app = new Microsoft.Office.Interop.Word.Application();
            var MyDoc = app.ActiveDocument;
            var sourceDoc = app.Documents.Open(@"C:\install\CSharp\test.docx");
            sourceDoc.ActiveWindow.Selection.WholeStory();
            sourceDoc.ActiveWindow.Selection.Copy();
            MyDoc.ActiveWindow.Selection.Paste();

2)

var newDocument = new Microsoft.Office.Interop.Word.Document();
            newDocument.ActiveWindow.Selection.Paste();
            newDocument.SaveAs(@"C:\install\CSharp\test1.docx");

但如果我那样做(2): 它会起作用。但我需要粘贴到我的活动文档中。另外我认为复制粘贴方法不太好。也许还有其他方法可以将一个文档导入另一个文档。

从不,从不,从不做 (2)。使用 new Microsoft.Office.Interop.Word.Document(); 肯定会导致意想不到的内存泄漏问题。 Word 允许您执行此操作,但不受支持。 new 只能用于 Word 应用程序的新实例。

而是使用 Documents.Add 引用模板文件。这将创建模板的副本作为新文档 - 非常简单:

private void Button1_Click(object sender, RibbonControlEventArgs e)
{
    var app = new Microsoft.Office.Interop.Word.Application();
    var MyDoc = app.Documents.Add(@"C:\install\CSharp\test.docx");
}