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

使用VBA将Excel发票工作表转换为PDF(适配多工作表独立按钮)

修改VBA代码实现指定工作表PDF导出

针对你的需求,这里提供两种修改方案,确保点击对应工作表的按钮时,仅导出该工作表的PDF文件:

方案1:独立宏对应独立工作表

为两个工作表分别编写专属宏,按钮绑定对应宏后,无论当前激活哪个工作表,都会导出指定的目标表:

' 经销商发票表导出宏
Sub SaveDealerInvoiceAsPDF()
    Dim targetWs As Worksheet
    Dim savePath As String
    Dim fullFileName As String
    
    ' 指定目标工作表(名称需与实际工作表名一致)
    Set targetWs = ThisWorkbook.Worksheets("经销商发票表")
    
    ' 定义保存根路径
    savePath = "C:\Users\Administrator\Desktop\INVOICE OUT RESTORE\INVOICE SERIAL WISE\"
    
    ' 检查路径是否存在,不存在则创建
    If Dir(savePath, vbDirectory) = "" Then
        MkDir savePath
    End If
    
    ' 拼接完整文件名(添加.pdf后缀确保格式正确)
    fullFileName = savePath & targetWs.Range("L8").Value & ".pdf"
    
    ' 导出为PDF
    targetWs.ExportAsFixedFormat Type:=xlTypePDF, _
        filename:=fullFileName, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

' 线上销售发票表导出宏
Sub SaveOnlineInvoiceAsPDF()
    Dim targetWs As Worksheet
    Dim savePath As String
    Dim fullFileName As String
    
    ' 指定目标工作表(名称需与实际工作表名一致)
    Set targetWs = ThisWorkbook.Worksheets("线上销售发票表")
    
    ' 定义保存根路径
    savePath = "C:\Users\Administrator\Desktop\INVOICE OUT RESTORE\INVOICE SERIAL WISE\"
    
    ' 检查路径是否存在,不存在则创建
    If Dir(savePath, vbDirectory) = "" Then
        MkDir savePath
    End If
    
    ' 拼接完整文件名(添加.pdf后缀确保格式正确)
    fullFileName = savePath & targetWs.Range("L8").Value & ".pdf"
    
    ' 导出为PDF
    targetWs.ExportAsFixedFormat Type:=xlTypePDF, _
        filename:=fullFileName, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

用法

  • 右键点击「经销商发票表」上的按钮,选择指定宏,绑定SaveDealerInvoiceAsPDF
  • 右键点击「线上销售发票表」上的按钮,选择指定宏,绑定SaveOnlineInvoiceAsPDF

方案2:通用宏自动识别按钮所在工作表

编写一个通用宏,自动判断点击的按钮属于哪个工作表,仅需一个宏即可适配两个按钮:

Sub SaveCurrentSheetAsPDF()
    Dim targetWs As Worksheet
    Dim savePath As String
    Dim fullFileName As String
    
    ' 获取按钮所在的工作表(兼容表单控件按钮)
    If TypeName(Application.Caller) = "Button" Then
        Set targetWs = ThisWorkbook.Worksheets(Application.Caller.TopLeftCell.Parent.Name)
    Else
        ' 若为ActiveX控件或其他情况,默认使用当前激活工作表
        Set targetWs = ActiveSheet
    End If
    
    ' 定义保存根路径
    savePath = "C:\Users\Administrator\Desktop\INVOICE OUT RESTORE\INVOICE SERIAL WISE\"
    
    ' 检查路径是否存在,不存在则创建
    If Dir(savePath, vbDirectory) = "" Then
        MkDir savePath
    End If
    
    ' 拼接完整文件名(添加.pdf后缀确保格式正确)
    fullFileName = savePath & targetWs.Range("L8").Value & ".pdf"
    
    ' 导出为PDF
    targetWs.ExportAsFixedFormat Type:=xlTypePDF, _
        filename:=fullFileName, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

用法

两个工作表的按钮都绑定SaveCurrentSheetAsPDF宏即可,点击时会自动导出按钮所在工作表的PDF。


内容的提问来源于stack exchange,提问作者Kalim Shaikh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:37:55