Results 1 to 20 of 49

Thread: Need code to merge PDF files in a folder using adobe acrobat X

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #2
    VBAX Contributor
    Joined
    Dec 2009
    Location
    Sevastopol
    Posts
    150
    Location
    Hi,
    Set reference to VBE - Tools - References – Acrobat
    and try this code:
    Sub MergePDFs()
    ' ZVI:2013-08-27 http://www.vbaexpress.com/forum/showthread.php?47310-Need-code-to-merge-PDF-files-in-a-folder-using-adobe-acrobat-X
    ' Reference required: "VBE - Tools - References - Acrobat"
     
      ' --> Settings, change to suit
      Const MyPath = "C:\Temp"            ' Path where PDF files are stored
       Const MyFiles = "1.pdf,2.pdf,3.pdf"  ' List of PDFs to ne merged
      Const DestFile = "MergedFile.pdf"   ' The name of the merged file
      ' <-- End of settings
     
      Dim a As Variant, i As Long, n As Long, ni As Long, p As String
      Dim AcroApp As New Acrobat.AcroApp, PartDocs() As Acrobat.CAcroPDDoc
     
      If Right(MyPath, 1) = "\" Then p = MyPath Else p = MyPath & "\"
      a = Split(MyFiles, ",")
      ReDim PartDocs(0 To UBound(a))
     
      On Error GoTo exit_
      If Len(Dir(p & DestFile)) Then Kill p & DestFile
      For i = 0 To UBound(a)
        ' Check PDF file presence
        If Dir(p & Trim(a(i))) = "" Then
          MsgBox "File not found" & vbLf & p & a(i), vbExclamation, "Canceled"
          Exit For
        End If
        ' Open PDF document
        Set PartDocs(i) = CreateObject("AcroExch.PDDoc")
        PartDocs(i).Open p & Trim(a(i))
        If i Then
          ' Merge PDF to PartDocs(0) document
          ni = PartDocs(i).GetNumPages()
          If Not PartDocs(0).InsertPages(n - 1, PartDocs(i), 0, ni, True) Then
            MsgBox "Cannot insert pages of" & vbLf & p & a(i), vbExclamation, "Canceled"
          End If
          ' Calc the number of pages in the merged document
          n = n + ni
          ' Release the memory
          PartDocs(i).Close
          Set PartDocs(i) = Nothing
        Else
          ' Calc the number of pages in PartDocs(0) document
          n = PartDocs(0).GetNumPages()
        End If
      Next
     
      If i > UBound(a) Then
        ' Save the merged document to DestFile
        If Not PartDocs(0).Save(PDSaveFull, p & DestFile) Then
          MsgBox "Cannot save the resulting document" & vbLf & p & DestFile, vbExclamation, "Canceled"
        End If
      End If
     
    exit_:
     
      ' Inform about error/success
      If Err Then
        MsgBox Err.Description, vbCritical, "Error #" & Err.Number
      ElseIf i > UBound(a) Then
        MsgBox "The resulting file is created:" & vbLf & p & DestFile, vbInformation, "Done"
      End If
     
      ' Release the memory
      If Not PartDocs(0) Is Nothing Then PartDocs(0).Close
      Set PartDocs(0) = Nothing
     
      ' Quit Acrobat application
      AcroApp.Exit
      Set AcroApp = Nothing
     
    End Sub
    Last edited by ZVI; 08-27-2013 at 05:19 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •