Я пытаюсь объединить 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