导出单个pdf文件中附加的多个word文档

问题描述 投票:0回答:1

我在Excel工作表中有一个嵌入式MS-Word文档,名称为SalaryPaycheck

MS-word文档包含几个到Worksheet单元格的链接字段。

我已经多次更新链接的单元格并执行上面的字段更新。

然后我需要在每次更新字段时执行导出嵌入式MS-Word文档,如PDF

所以我需要将所有导出的文件附加在单个pdf文件中。

我使用下面的代码:

Sub PrintIt()

    Dim objWord As Word.Application
    Dim objDoc As Word.Document
    Dim i as Integer

    ActiveSheet.OLEObjects("SalaryPaycheck").Activate
    Set objWord = GetObject(, "Word.Application")
    objWord.Visible = False
    Set objDoc = objWord.ActiveDocument
    objWord.Application.DisplayAlerts = wdAlertsNone
    objWord.Application.ScreenUpdating = False

    For i = 1 to 10

        Range("Key").value = i

        objDoc.Fields.Update

        objDoc.ExportAsFixedFormat _
            outputfileName:=ThisWorkbook.path & "\Results\" & "rep" & i & ".pdf" _
            , exportformat:=wdExportFormatPDF _
            , openafterexport:=False _
            , optimizefor:=wdExportOptimizeForPrint _
            , Range:=wdExportAllDocument _
            , Item:=wdExportDocumentContent _
            , includedocprops:=False _
            , keepirm:=True _
            , createbookmarks:=wdExportCreateNoBookmarks _
            , docstructuretags:=True _
            , bitmapmissingfonts:=True _
            , useiso19005_1:=False
    Next i

    objWord.Quit
    Set objDoc = Nothing
    Set objWord = Nothing

End Sub 'Print it

如何使用objDoc.SaveAs2objDoc.ExportAsFixedFormat(如上所示)与objDoc.PrintOut' whith 'Append:=True参数相同?

或者如何在这种情况下使用.PrintOut和'Append:= True'参数(PDF)安静地工作(使用OutputFileName:=path & filenamePrintToFile:=True

excel vba excel-vba pdf pdf-generation
1个回答
2
投票

正如其他question所说,只需将文件附加在文字中

Sub PrintIt()

Dim objWord As Word.Application
Dim objDocTotal As Word.Document
Dim objDoc As Word.Document
Dim i As Integer
Dim strOutfile As String
Dim rg As Word.Range

    ActiveSheet.OLEObjects("SalaryPaycheck").Activate
    Set objWord = GetObject(, "Word.Application")
    objWord.Visible = True
    Set objDoc = objWord.ActiveDocument
    Set objDocTotal = Documents.Add
    objWord.Application.DisplayAlerts = wdAlertsNone
    objWord.Application.ScreenUpdating = True

    For i = 1 To 10

        Range("Key").Value = i

        With objDoc
            .Fields.Update
            .Content.Copy
        End With

        Set rg = objDocTotal.Content
        With rg
            .Collapse Direction:=wdCollapseEnd
            If i > 1 Then .InsertBreak wdPageBreak
            .PasteAndFormat wdFormatOriginalFormatting
        End With
    Next i


    strOutfile = "<Path>\Salary.pdf"

    objDocTotal.ExportAsFixedFormat outputfileName:= _
                                    strOutfile, exportformat:=wdExportFormatPDF, _
                                    openafterexport:=False, optimizefor:=wdExportOptimizeForPrint, Range:= _
                                    wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent



    objDocTotal.Close False
    objWord.Quit
    Set objDoc = Nothing
    Set objWord = Nothing

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.