使用C#将整个内容从一个Word文档复制到另一个Word文档

时间:2019-11-25 13:13:33

标签: c# vba ms-word

我正在尝试使用<key>UIUserInterfaceStyle</key> <string>Light</string> 将整个内容(包括页码和页面布局)从Word文档复制到另一个文档中。 我无法使用SaveAs方法,因为我要粘贴内容的文档已经创建,并且包含VBA代码。 另外,我不能使用与XML相关的代码,因为复制内容的文档是较旧的格式。该文档是使用VBA代码将文档上传到服务器数据库的一种旧方法的一部分。

使用VBA代码,我可以复制整个内容而没有任何问题。

Microsoft.Office.Interop.Word

对于C#,我使用 Selection.WholeStory Selection.Copy Windows("document.doc").Activate Selection.WholeStory Selection.PasteAndFormat (wdFormatOriginalFormatting) 复制了VBA代码。

Microsoft.Office.Interop.Word

我也尝试过使用范围

Word.Application objWordOpen = new Word.Application();
objWordOpen.Visible = false;
Word.Document doclocal = objWordOpen.Documents.Open(filepath);

doclocal.ActiveWindow.Selection.WholeStory();
doclocal.ActiveWindow.Selection.Copy();

Document d1 = objWordOpen.Documents.Open(filepath2);
d1.Activate();
d1.ActiveWindow.Selection.WholeStory();
d1.ActiveWindow.Selection.PasteAndFormat(Word.WdRecoveryType.wdFormatOriginalFormatting);

内容被复制到文档中,但没有页眉和页脚。另外,使用Word.Range oRange = doclocal.Content; oRange.Copy(); 方法时,不会复制页面边距设置。 为了达到我的结果,我应该对c#代码进行哪些更改?

1 个答案:

答案 0 :(得分:1)

MS Office应用程序与剪贴板之间的关系很复杂。在可能导致cryptic prompts的各种优化与它们支持的多种格式之间,最好不要在CopyPaste之间做任何有趣的事情。

VBA代码遵循此建议,C#代码在复制和粘贴之间打开一个文档。

确保提前打开文档,而不要在复制粘贴的中间。