如何将Excel中多个PDF超链接合并为单个PDF文档?
合并Excel中超链接PDF的高效方法
一、VBA宏批量下载+合并(自动化流程)
直接用下面的宏,能一次性下载所有超链接里的PDF,自动合并成一个文档:
Sub DownloadPDFsAndMerge() Dim savePath As String Dim myRange As Range Dim oneLink As Hyperlink Dim fileName As String Dim fso As Object Dim acroApp As Object Dim acroDoc As Object Dim mergedDoc As Object ' 修改成你想保存文件的路径 savePath = "C:\Temp\PDFsToMerge\" Set fso = CreateObject("Scripting.FileSystemObject") ' 自动创建保存文件夹 If Not fso.FolderExists(savePath) Then fso.CreateFolder savePath End If ' 选择包含超链接的单元格范围 Set myRange = Application.InputBox("选择包含PDF超链接的单元格范围", Type:=8) ' 批量下载所有PDF For Each oneLink In myRange.Hyperlinks ' 提取文件名,重复的话加时间戳避免冲突 fileName = fso.GetFileName(oneLink.Address) If fso.FileExists(savePath & fileName) Then fileName = fso.GetBaseName(fileName) & "_" & Format(Now(), "YYYYMMDDHHMMSS") & ".pdf" End If ' 下载文件 With CreateObject("MSXML2.XMLHTTP") .Open "GET", oneLink.Address, False .Send If .Status = 200 Then Open savePath & fileName For Binary As #1 Put #1, , .responseBody Close #1 End If End With Next oneLink ' 调用Adobe Acrobat合并文档 Set acroApp = CreateObject("AcroExch.App") Set mergedDoc = CreateObject("AcroExch.PDDoc") ' 以第一个PDF为基础开始合并 Dim firstFile As String firstFile = Dir(savePath & "*.pdf") If firstFile <> "" Then mergedDoc.Open savePath & firstFile ' 逐个追加剩余PDF fileName = Dir Do While fileName <> "" If fileName <> firstFile Then Set acroDoc = CreateObject("AcroExch.PDDoc") If acroDoc.Open(savePath & fileName) Then mergedDoc.InsertPages mergedDoc.GetNumPages - 1, acroDoc, 0, acroDoc.GetNumPages, False acroDoc.Close End If End If fileName = Dir Loop ' 保存合并后的文件 mergedDoc.Save 1, savePath & "合并后的文档.pdf" mergedDoc.Close acroApp.Exit End If MsgBox "搞定!PDF已经下载并合并完成" End Sub
注意事项:
- 必须安装Adobe Acrobat Pro(免费版Reader不行,没有合并API)
- 提前修改代码里的
savePath为你自己的文件夹路径 - 运行宏前要开启Excel的宏功能,允许访问外部内容
二、无代码方案:用Adobe Acrobat批量合并
如果不想碰代码,按以下步骤来:
- 批量下载PDF:
- 在Excel超链接列旁边新增一列,输入公式
=HYPERLINK(A1)(假设超链接在A列),下拉填充后复制这列内容到记事本,得到所有PDF链接 - 用浏览器批量下载插件把所有PDF下载到同一个文件夹
- 在Excel超链接列旁边新增一列,输入公式
- 合并PDF:
- 打开Adobe Acrobat Pro,点击顶部工具 -> 合并文件
- 点击添加文件 -> 添加文件夹,选中刚才下载PDF的文件夹
- 调整文件顺序(如果需要),点击合并,保存最终文档
三、你之前的宏为什么没用?
你贴的OpenMultipleLinks宏只是逐个打开超链接,既不会下载文件,也不会合并,所以完全不符合需求。要实现合并,必须改成「下载+合并」的逻辑,也就是上面的VBA代码。
内容的提问来源于stack exchange,提问作者Jordan Davis
相关产品推荐
相关产品推荐

