乐于分享
好东西不私藏

利用VBA合并PDF文件

利用VBA合并PDF文件

从我个人的观点来看,我认为没要什么必要一定要借助 VBA 实现 PDF 文件合并操作。因为当前市面上已存在各类专用 PDF 处理小工具,均可便捷完成 PDF 文件的合并与拆分功能。

不过,既然网友提出了相关需求,不妨对该问题进行探讨,验证通过 VBA 实现 PDF 合并的可行性。

首先需要明确的是,VBA 本身并不具备原生的 PDF 合并功能,若要实现该操作,通常需调用 Adobe Acrobat SDK 或借助第三方类库。

这意味着,使用者必须预先安装 Adobe Acrobat Pro 专业版。而实际上,在已安装 Acrobat Pro 专业版的前提下,即可通过菜单进行可视化操作PDF文件的合并,无需再通过 VBA 执行合并操作,除非存在大量待合并的 PDF 文件,且这些文件分散存储于不同文件夹中。

测试环境说明:

本地已安装 Adobe Acrobat XI Pro;在路径D:\test\目录下存在10  PDF 文件,文件命名依次为 11.pdf12.pdf…… 直到 20.pdf

测试代码:

Sub MergePDF()    Dim objApp As Object                Dim objMainDoc As Object            Dim objTempDoc As Object            Dim i As Integer    Dim strFolderPath As String    Dim strDestPath As String    strFolderPath = "D:\test\"          strDestPath = strFolderPath & "Merged.pdf"    On Error Resume Next    Set objMainDoc = CreateObject("AcroExch.PDDoc")    Set objTempDoc = CreateObject("AcroExch.PDDoc")    On Error GoTo 0    If objMainDoc Is Nothing Then        MsgBox "无法创建 Acrobat 对象", vbCritical        Exit Sub    End If    If objMainDoc.Open(strFolderPath & "11.pdf") Then        For i = 12 To 20            If Dir(strFolderPath & i & ".pdf") <> "" Then                If objTempDoc.Open(strFolderPath & i & ".pdf") Then                    objMainDoc.InsertPages objMainDoc.GetNumPages() - 1, objTempDoc, 0, objTempDoc.GetNumPages(), True                    objTempDoc.Close                End If            End If        Next i        If objMainDoc.Save(1, strDestPath) Then            MsgBox "合并成功!" & strDestPath        Else            MsgBox "保存失败!"        End If        objMainDoc.Close    Else        MsgBox "找不到起始文件11.pdf", vbExclamation    End If    Set objMainDoc = Nothing    Set objTempDoc = NothingEnd Sub

经测试验证,通过VBA方式可快速完成PDF文件合并,其操作速度优于通过菜单手动操作。但在实际使用过程中,需注意以下两点问题:

1)绑定方式相关设置

本例中采用的是后期绑定方法,若需切换为前期绑定,需按以下步骤进行设置:

★ 在VBA编辑器中,点击【工具 (Tools)】→【引用 (References)】;

★ 点击【浏览(Browse…)】按钮;

★ 在文件类型下拉框中,确保选中【Type Libraries (*.tlb; *.olb)】或【All Files】;

★ 导航至指定目录:X:\Adobe\Acrobat 11.0\Acrobat\

★ 选中【acrobat.tlb】文件,点击【打开】;

★ 此时引用列表中会新增【Adobe Acrobat 11.0 Type Library】选项,勾选该选项并点击【确定】即可完成设置。

2)个人经验分享

对于需合并的PDF文件,建议按阿拉伯数字序号重新命名并排序。需注意,命名不宜从12等个位数开始,因该命名方式会导致排序混乱(如1之后会优先显示112之后会优先显示21)。因此,建议从11开始命名排序;若待合并文件数量较多,可从101开始命名,核心目的是避免因文件名位数不一致,导致合并顺序出现错乱。

今天的分享就到这儿啦,非常感谢您对“Python SQL审天下公众号的关注和点赞。如果您觉得我的公众号能给您带来一丝丝的收获,请多多转发给您的朋友圈,让更多的人看到并了解。也许您不经意间的点赞和转发,会给他人带来独特的体验和感受。