You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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批量合并

如果不想碰代码,按以下步骤来:

  1. 批量下载PDF:
    • 在Excel超链接列旁边新增一列,输入公式=HYPERLINK(A1)(假设超链接在A列),下拉填充后复制这列内容到记事本,得到所有PDF链接
    • 用浏览器批量下载插件把所有PDF下载到同一个文件夹
  2. 合并PDF:
    • 打开Adobe Acrobat Pro,点击顶部工具 -> 合并文件
    • 点击添加文件 -> 添加文件夹,选中刚才下载PDF的文件夹
    • 调整文件顺序(如果需要),点击合并,保存最终文档

三、你之前的宏为什么没用?

你贴的OpenMultipleLinks宏只是逐个打开超链接,既不会下载文件,也不会合并,所以完全不符合需求。要实现合并,必须改成「下载+合并」的逻辑,也就是上面的VBA代码。

内容的提问来源于stack exchange,提问作者Jordan Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:58:20