Avatar billede friis5 Novice
14. november 2007 - 11:31 Der er 2 kommentarer og
1 løsning

Vba script til at merge generede pdf'er

Hej Eksperter.

Jeg sidder og har lavet et script, der smider 5 pdf'er ud efter kørsel - dem vil jeg gerne have merget pr. automatik (kender jo navne og stier, så det burde ikke være noget problem).

Fandt denne kode: http://groups.google.dk/group/microsoft.public.access.modulesdaovba/browse_thread/thread/323c82b84ff0b4be/63cda5bc7124c3a6?lnk=st&q=vba+merge+pdf#63cda5bc7124c3a6

'---------------- START CODE ---------------------

Option Compare Database
Option Explicit


Private colDOCS As Collection 'PDF Files to merge
Private strDestination As String 'Destination PDF Doc.
Private bolDeleteCoverPage As Boolean


Sub AddFile(strNewData As String)
    colDOCS.ADD strNewData
End Sub


Sub ClearFileList()
'PURPOSE: remove Files in Collection. Set Collection to nothing and reinitalize
    If Not colDOCS Is Nothing Then Set colDOCS = Nothing
    Set colDOCS = New Collection
End Sub


Property Let Destination(strDest As String)
  strDestination = strDest
End Property


Function Merge() As Long
On Error GoTo Proc_Error
    Dim objAcroApp As Acrobat.CAcroApp
    Dim objAcroDoc As Acrobat.CAcroPDDoc
    Dim objAcroDocSrc As Acrobat.CAcroPDDoc
    Dim lngRetVal As Long
    Dim I As Long
    Dim lngPage As Long


    Set objAcroApp = CreateObject("AcroExch.App")
    Set objAcroDoc = CreateObject("AcroExch.PDDoc")
    Set objAcroDocSrc = CreateObject("AcroExch.PDDoc")


    lngRetVal = objAcroDoc.Open(colDOCS.Item(1))
    lngPage = objAcroDoc.GetNumPages


    For I = 2 To colDOCS.Count
        lngRetVal = objAcroDocSrc.Open(colDOCS.Item(I))
        If lngRetVal = False Then
            MsgBox ("Error Opening " + colDOCS.Item(I))
            Merge = False
            GoTo Proc_Exit
        End If
        Merge = objAcroDoc.InsertPages((lngPage - 1), objAcroDocSrc, 0, objAcroDocSrc.GetNumPages, False)
        lngPage = lngPage + objAcroDocSrc.GetNumPages
        objAcroDocSrc.Close
    Next I
    objAcroDoc.CreateThumbs 0, lngPage - 1


    Merge = objAcroDoc.Save(PDSaveFull, strDestination)


    objAcroDoc.Close
    objAcroApp.Exit
Proc_Exit:


    If Not objAcroApp Is Nothing Then Set objAcroApp = Nothing
    If Not objAcroDoc Is Nothing Then Set objAcroDoc = Nothing
    If Not objAcroDocSrc Is Nothing Then Set objAcroDocSrc = Nothing
Exit Function
Proc_Error:
    MsgBox Err.Description
    Merge = Err.Number
Resume Proc_Exit
End Function


Private Sub Class_Initialize()
    Set colDOCS = New Collection
End Sub
Private Sub Class_Terminate()
On Error Resume Next
    If Not colDOCS Is Nothing Then Set colDOCS = Nothing
End Sub


'------------------- END CODE -------------------

Jeg forstår desværre bare hoved og hale af den :/ - og jeg kan ikke teste den, da mit vba ikke kender Acrobat.CAcroApp bl.a. :S

Håber nogen kan enten hjælpe mig med ovenstående kode, eller har en nem lille snild kode liggende, som jeg kan bruge til mit formål.
Avatar billede falster Ekspert
14. november 2007 - 13:48 #1
Kig eventuelt på denne PDF Tool Kit

http://www.accesspdf.com/pdftk/index.html
Avatar billede friis5 Novice
16. november 2007 - 09:24 #2
Takker men jeg ønsker ikke installation er software for at løse problemet, da løsningen skal kunne køre på forskellige computere (alle med adobe installeret)
Avatar billede friis5 Novice
18. august 2010 - 13:02 #3
Kunne bruge denne kode, fundet andet steds...

Sub Start()
   
    Call VaelgInOut

End Sub


Public Function ApplyBackgroundToPDF(InPDF As String, OutPDF As String)
   
   
    Dim gApp As Acrobat.CAcroApp
    Dim pdDoc As Acrobat.CAcroPDDoc
    Dim lngPage As Long
   
    Set gApp = CreateObject("AcroExch.App")
    Set pdDoc = CreateObject("AcroExch.PDDoc")
   
    If pdDoc.Open(InPDF) Then
        pdDoc.DeletePages pdDoc.GetNumPages - 1, pdDoc.GetNumPages - 1
        Call pdDoc.Save(1, OutPDF)
    End If
           
     
End Function
Public Function VaelgInOut()

    Dim Filnavn As String
    Dim Filter As String
    Dim Caption As String
    Dim Tidsstempel As String
    Dim Størrelse As String
    Dim FilnavnTekst As String
   
    Call MsgBox("Vælg pdf dokument hvor side skal fjernes")
 
    Filter = "Excel filer (*.PDF), *.PDF"
    Caption = "Vælg fil til Input"
    Filnavn = Application.GetOpenFilename(Filter, , Caption, "OK")
   
    Call ApplyBackgroundToPDF(Filnavn, Filnavn)
   
    Call MsgBox("Siden er nu fjernet")
   
End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester