VB.NET Word 自动化:如何插入文件并保留格式

Posted

技术标签:

【中文标题】VB.NET Word 自动化:如何插入文件并保留格式【英文标题】:VB.NET Word Automation: How to insert a file and preserve formatting 【发布时间】:2017-06-01 13:53:07 【问题描述】:

使用 Word 和 VB.net 自动化构建一个 Word 文档,该文档由多个附加在一起的文档组成。

所以我执行 Word.Documents.Add(firstDocument),然后转到文件末尾并执行 Word.Selection.InsertFile(secondDocument),它按预期工作,除非 firstDocument 是例如 Verdana 10pt 和secondDocument 是 Calibiri 11,它使用 firstDocument 的字体和样式插入 secondDocument。

我在 Selection.InsertFile 的文档中找不到任何会对格式产生任何影响的内容,因此我认为必须以另一种方式对其进行控制。我还尝试在插入文件之前插入分页符和分节符(带分页符),但发现它对字体没有影响。

目前我有应用程序从 secondDocument 复制所有内容,关闭 secondDocument,打开 firstDocument,移动到结尾然后粘贴。由于许多原因,这是有问题的,但它保留了格式。

有什么想法可以在插入 firstDocument 时保持 secondDocument 的精确格式?我需要摆脱使用剪贴板!

谢谢!

编辑:这是我一直在测试的代码:

 Public Sub TestingWord()
    Dim thisApp As New Word.Application
    Dim SourceDoc As New Word.Document
    Dim DestDoc As New Word.Document

    Try
        thisApp.Visible = False

        DestDoc = thisApp.Documents.Add("X:\Isaac\First.docx")

        thisApp.Selection.WholeStory()
        thisApp.Selection.EndKey(Unit:=6)
        thisApp.Selection.InsertBreak(Word.WdBreakType.wdSectionBreakNextPage)

        thisApp.Selection.InsertFile("X:\Isaac\Second.docx")

        thisApp.Selection.WholeStory()
        thisApp.Selection.EndKey(Unit:=6)
        thisApp.Selection.InsertBreak(Word.WdBreakType.wdSectionBreakNextPage)

        thisApp.Selection.InsertFile("X:\Isaac\Third.docx")

        DestDoc.SaveAs2("X:\Isaac\Yo.docx")

        thisApp.Quit(SaveChanges:=Word.WdSaveOptions.wdSaveChanges)
        releaseObject(DestDoc)
        releaseObject(SourceDoc)
        releaseObject(thisApp)

    Catch ex As Exception
        MsgBox("Error: " & ex.Message.ToString)
    Finally
        MsgBox("Success!")
    End Try

End Sub

【问题讨论】:

好像可以复制粘贴文档,保留原格式***.com/questions/32472020/… 是的,我可以复制和粘贴,它可以工作,但正如我在原帖中所说,出于多种原因,我不得不放弃使用剪贴板。 【参考方案1】:

解决了!

代码中没有。问题是当您插入文件时,Word 会应用与目标文档相同的样式格式。在我的例子中,由于 First.docx 和 Second.docx 都使用了一种名为“Normal”的样式,Word 将 Second.docx 的“Normal”样式读取为与 First.docx 相同,而实际上这两种样式具有不同的定义。

解决方案:

我浏览了我的每个模板,并为所有文档上的每种字体大小和类型创建了独特的新样式名称。再次运行该过程,它就像一个魅力!

【讨论】:

以上是关于VB.NET Word 自动化:如何插入文件并保留格式的主要内容,如果未能解决你的问题,请参考以下文章

在 VB.NET 中使用 Word 和 Outlook 2007 的 Office 互操作

C#/VB.NET 如何在Word表格中拆分或合并单元格?

VB.Net保存word文档不提示

如何使用VB.NET在Access数据库中插入多条记录

如何在 VB.NET 项目中插入 exe 文件并使用此文件发布应用程序?

如何获取表中的最后一个自动增量值? VB.NET