使用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
相关产品推荐
相关产品推荐

