Экспорт нескольких документов Word, добавленных в одном файле PDF

У меня есть встроенный документ MS-Word в лист Excel, имя которого SalaryPaycheck,

Документ MS-word содержит несколько связанных полей с ячейками рабочего листа.

Я обновил связанные ячейки несколько раз и произвел обновление вышеуказанных полей.

Затем мне нужно выполнить экспорт встроенного документа 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.SaveAs2 или же objDoc.ExportAsFixedFormat (показано выше) так же, как objDoc.PrintOut' whith 'Append:=True аргумент?

Или как можно с помощью .PrintOut с аргументом "Append:=True" в этом случае (PDF), который работает тихо (используя OutputFileName:=path & filename а также PrintToFile:=True)

1 ответ

Решение

Как сказано в другом вопросе, просто добавьте документы словом

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
Другие вопросы по тегам