使用VBA打开并合并多个PDF文件

时间:2015-04-08 00:53:35

标签: vba excel-vba pdf merge pdf-generation

我正在尝试打开三个pdf文件以合并它们。我们每月创建一系列文件,这些文件都由“自动收报机”识别。

我有三个源文件:

RootDoc = Root文件,每月生成,变量文件名:“[variable ticker] + [static RootDoc append] .pdf”

DefDoc =静态文件,变量文件名,“[变量股票代码] + [静态DefDoc追加] .pdf”

NotesDoc =一个文件,不会更改,必须包含在所有文档中。

我坚持在以下条件下如何合适地合并:

1)每个月文件夹中标有标题的文件数量会有所不同。

2)同一个股票代码的RootDoc和DefDoc必须配对,因为它们包含特定于股票的信息。代码将在两个文件上匹配,但字符长度会从一组文件到下一组文件不同。

3)我在Adobe中保存了一个页脚格式,必须应用于所有文档。 (这不是必要的,但如果有必要,我可以在VBA之外做到这一点)

这是我到目前为止所做的事情,为了清楚起见,注释了注释:

With Application
    .DisplayAlerts = False
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With

Dim Filename, Pathname, PRODname, Defname As String
Dim RootDoc, NotesDoc, DefDoc As AcroPDDoc
Dim stp1, stp2, stp3, mergefile As Variant

Pathname = "H:\apps\xp\Desktop\PROD CHECK\Expanded LT"
'PRODname = "*[static RootDoc append].pdf"
Filename = Dir(Pathname & "\" & PRODname)
'Defname = "*[static DefDoc append].pdf"

Set RootDoc = CreateObject("AcroExch.PDDoc")
Set NotesDoc = CreateObject("AcroExch.PDDoc")
Set DefDoc = CreateObject("AcroExch.PDDoc")

'stp1 = NotesDoc.Open("[unchanging file name and location]")

Do While Filename <> ""
    'stp2 = RootDoc.Open(Pathname & "\" & Filename)
    'stp3 = DefDoc.Open("[location]" & "\" & Defname)
        'mergefile = RootDoc.InsertPages([I want to insert all of DefDoc into RootDoc after page 0])
        'mergefile = RootDoc.InsertPages([I want to insert all of NotesDoc after the last page of RootDoc])
        DefDoc.Close SaveChanges:=False
    'RootDoc = [Apply Saved Footer]
    RootDoc.Close SaveChanges:=True
    Filename = Dir()
Loop

With Application
    .DisplayAlerts = True
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

1 个答案:

答案 0 :(得分:1)

这个问题是关于使用文件名查找要合并的pdf文件,还是通过VBA使用Acrobat API合并PDF文件?

如果你需要找到最好的工作流程,那么我想你应该找到文件夹中的所有文件,并找到使用正则表达式找到“ticker”文件名(请参阅关于regular expressions in VBA和{{3的这个很棒的答案使用VBA中的正则表达式匹配文件名。

如果您正在寻找使用Acrobat API将页面从一个pdf文档合并到另一个pdf文档的正确方法,那么您应该检查this tutorial(请参阅 Javascript / Javascript for Acrobat ... / Javascript API / Doc / InsertPages 部分)和online documentation for Acrobat API示例VB代码。