微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Access VBA问题将PDF合并为一个PDF文件

如何解决使用Access VBA问题将PDF合并为一个PDF文件

我目前正在使用此代码合并我的Access报告,这些报告打印为.pdf。直到最近它一直运行良好,我不确定为什么不合并我的.pdf文件。有人可以看一下,然后告诉我哪里出了问题。我的参考设置为Adobe Acrobat 10.0类型库。任何帮助将不胜感激。

Dim Encl2,Encl2FN,Encl2Path,Encl3,Encl3FN,Encl3Path,Encl4,Encl4FN,Encl4Path As String
Dim RPath,TempPath,TempPathEncl2,TempPathEncl3,TempPathEncl4 As String
Dim UserPth,strfile,strFilePath As String
Dim arrayFilePaths() As Variant
Dim app As Acrobat.CAcroApp
Dim primaryDoc As Acrobat.CAcroPDDoc
Dim SourceDoc As Acrobat.CAcroPDDoc
Dim OK
Dim arrayIndex
Dim numberOfPagesToInsert As String
Dim numPages As Integer

Encl2 = "rpt_Delegation_Enclosure2"
Encl3 = "rpt_Delegation_Enclosure3"
Encl4 = "rpt_Delegation_Enclosure4"

Encl2FN = "Enclosure2" & ".pdf"
Encl3FN = "Enclosure3" & ".pdf"
Encl4FN = "Enclosure4" & ".pdf"

UserPth = Environ("USERPROFILE")
TempPathEncl2 = UserPth & "\Desktop\" & Encl2FN
TempPathEncl3 = UserPth & "\Desktop\" & Encl3FN
TempPathEncl4 = UserPth & "\Desktop\" & Encl4FN
strfile = "SourceRpt" & ".pdf"
strFilePath = UserPth & "\Desktop\" & strFile

RPath = strFilePath

    Set app = CreateObject("AcroExch.App")

    arrayFilePaths = Array(RPath,TempPathEncl4)

    Set primaryDoc = CreateObject("AcroExch.PDDoc")
    OK = primaryDoc.Open(arrayFilePaths(0))
    Debug.Print "PRIMARY DOC OPENED & PDDOC SET: " & OK
            
    For arrayIndex = 1 To UBound(arrayFilePaths)
        numPages = primaryDoc.GetNumPages() - 1

        Set SourceDoc = CreateObject("AcroExch.PDDoc")
        OK = SourceDoc.Open(arrayFilePaths(arrayIndex))
        Debug.Print "SOURCE DOC OPENED & PDDOC SET: " & OK

        numberOfPagesToInsert = SourceDoc.GetNumPages

        OK = primaryDoc.InsertPages(numPages,SourceDoc,numberOfPagesToInsert,False)
        Debug.Print "PAGES INSERTED SUCCESSFULLY: " & OK

        OK = primaryDoc.Save(PDSaveFull,arrayFilePaths(0))
        Debug.Print "PRIMARYDOC SAVED PROPERLY: " & OK
        
        Set SourceDoc = nothing
    Next arrayIndex

    Set primaryDoc = nothing
    app.Exit
    Set app = nothing
End Sub

解决方法

这对我来说很好

改编自:VBA,Combine PDFs into one PDF file

Sub main()

    Const PDSaveFull = 1
    Dim arrayFilePaths() As Variant,OK,arrayIndex As Long
    Dim primaryDoc,app,numPages,numberOfPagesToInsert,sourceDoc
    
    Set app = CreateObject("Acroexch.app")

    arrayFilePaths = Array("C:\Tester\PDF_Sheet1.pdf",_
                            "C:\Tester\PDF_Sheet2.pdf",_
                            "C:\Tester\PDF_Sheet3.pdf")

    Set primaryDoc = CreateObject("AcroExch.PDDoc")
    OK = primaryDoc.Open(arrayFilePaths(0))
    Debug.Print "PRIMARY DOC OPENED & PDDOC SET: " & OK

    For arrayIndex = 1 To UBound(arrayFilePaths)
        numPages = primaryDoc.GetNumPages() - 1

        Set sourceDoc = CreateObject("AcroExch.PDDoc")
        OK = sourceDoc.Open(arrayFilePaths(arrayIndex))
        Debug.Print "SOURCE DOC OPENED & PDDOC SET: " & OK

        numberOfPagesToInsert = sourceDoc.GetNumPages

        OK = primaryDoc.InsertPages(numPages,sourceDoc,False)
        Debug.Print "PAGES INSERTED SUCCESSFULLY: " & OK

        OK = primaryDoc.Save(PDSaveFull,arrayFilePaths(0))
        Debug.Print "PRIMARYDOC SAVED PROPERLY: " & OK

        Set sourceDoc = Nothing
    Next arrayIndex

    Set primaryDoc = Nothing
    app.Exit
    Set app = Nothing
    MsgBox "DONE"
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。