Слияние документов с Adobe PDF API не работает - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь объединить 5 файлов, используя Excel VBA / Acrobat PDF API. В моем файле Excel есть столбец, содержащий путь к файлу для каждого из 5 файлов (Part1Document, Part2Document, Part3Document, Part4Document, Part5Document).

Мне нужно вставить четыре документа после первого документа (Part1Document), длина которого всегда составляет 3 страницы. Он работает для нескольких файлов, но не для всех, и я работаю с несколькими сотнями строк.

Sub Button1_Click()
    Dim AcroApp As Acrobat.CAcroApp

    Dim Part1Document As Acrobat.CAcroPDDoc
    Dim Part2Document As Acrobat.CAcroPDDoc
    Dim Part3Document As Acrobat.CAcroPDDoc
    Dim Part4Document As Acrobat.CAcroPDDoc
    Dim Part5Document As Acrobat.CAcroPDDoc

    Dim docOne As Integer
    Dim docTwo As Integer
    Dim docThree As Integer
    Dim docFour As Integer

    Dim i As Integer
    For i = 6 To 10                        
        Set AcroApp = CreateObject("AcroExch.App")
        Set Part1Document = CreateObject("AcroExch.PDDoc")
        Set Part2Document = CreateObject("AcroExch.PDDoc")
        Set Part3Document = CreateObject("AcroExch.PDDoc")
        Set Part4Document = CreateObject("AcroExch.PDDoc")
        Set Part5Document = CreateObject("AcroExch.PDDoc")

        Part1Document.Open (ActiveSheet.Range("D" & i).Value)
        Part2Document.Open (ActiveSheet.Range("E" & i).Value)
        Part3Document.Open (ActiveSheet.Range("F" & i).Value)
        Part4Document.Open (ActiveSheet.Range("G" & i).Value)
        Part5Document.Open (ActiveSheet.Range("H" & i).Value)

        ' Insert the pages of Part2 after the end of Part1
        docOne = Part1Document.GetNumPages()
        docTwo = docOne + Part2Document.GetNumPages()
        docThree = docTwo + Part3Document.GetNumPages()
        docFour = docThree + Part4Document.GetNumPages()


        If Part1Document.InsertPages(2, Part2Document, 0, Part2Document.GetNumPages(), True) = False Then

        End If

        If Part1Document.InsertPages(docTwo - 1, Part3Document, 0, Part3Document.GetNumPages(), True) = False Then

        End If

        If Part1Document.InsertPages(docThree - 1, Part4Document, 0, Part4Document.GetNumPages(), True) = False Then

        End If

        If Part1Document.InsertPages(docFour - 1, Part5Document, 0, Part5Document.GetNumPages(), True) = False Then

        End If


        If Part1Document.Save(PDSaveFull, "\\SVESS-PST\Folder Redirection\Jeff\Desktop\abc\abc-" & ActiveSheet.Range("C" & i) & "\" & ActiveSheet.Range("A" & i) & "_" & ActiveSheet.Range("B" & i).Value & ".pdf") = False Then
            MsgBox "Cannot save the modified document"
        End If

        Part1Document.Close
        Part2Document.Close
        Part3Document.Close
        Part4Document.Close
        Part5Document.Close

        AcroApp.Exit
        Set AcroApp = Nothing
        Set Part1Document = Nothing
        Set Part2Document = Nothing
        Set Part3Document = Nothing
        Set Part4Document = Nothing
        Set Part5Document = Nothing

    Next i

    MsgBox "Done"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...