【问题标题】:Copy entire content from one Word document to another using C#使用 C# 将整个内容从一个 Word 文档复制到另一个文档
【发布时间】:2020-03-20 19:05:06
【问题描述】:

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

使用 VBA 代码,我可以毫无问题地复制整个内容。

 Selection.WholeStory
 Selection.Copy
 Windows("document.doc").Activate
 Selection.WholeStory
 Selection.PasteAndFormat (wdFormatOriginalFormatting)

对于 C#,我使用 Microsoft.Office.Interop.Word 来复制 VBA 代码。

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();

内容被复制到文档中,但没有页眉和页脚。此外,当使用Selection.WholeStory() 方法时,不会复制页边距设置。 为了达到我的结果,我应该对 c# 代码进行哪些更改?

【问题讨论】:

  • 尝试先打开两个文件再复制。
  • 你可以直接复制整个实际文件吗?
  • @GSerg,它之前可以打开两个文件,但我不明白有什么相关性。如果您遇到此问题,您可以发布答案,解释原因。谢谢!
  • 打开文档的行为与Selection 混淆。这是一个观察,我没有具体的文档。
  • @GSerg,我明白为什么它会与Selection 混淆。但是,我的初始代码在复制选择后打开了文档,因此初始选择不再重要。无论如何,请将您的评论发布为 anwser,以便我可以将问题标记为已回答。再次感谢您!

标签: c# vba ms-word


【解决方案1】:

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

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

确保您提前打开文档,而不是在复制粘贴的过程中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多