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

时间:2017-01-17 13:14:55

标签: vb.net ms-word

使用Word和VB.net自动化构建一个Word文档,其中包含多个附加在一起的文档。

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

我无法在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

1 个答案:

答案 0 :(得分:0)

解决了!

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

解决方案:

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