如何为Excel导出PDF的循环宏添加文件名增量编号后缀?
解决Excel宏导出PDF重复覆盖的问题
直接修改文件名部分,利用循环变量生成带增量编号的文件名即可,修改后的完整代码如下:
Sub Print_Card() ' Print_Card Macro Dim x As Integer Dim loc As String Let x = 0 Do While x < 10 Calculate ' 拼接带增量编号的文件名 loc = "C:\Folder\FileName_" & x & ".pdf" ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=loc, _ OpenAfterPublish:=False, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ Quality:=xlQualityStandard, _ From:=1, To:=2 x = x + 1 Loop End Sub
关键修改说明
- 将固定文件名
"C:\Folder\FileName.pdf"改为"C:\Folder\FileName_" & x & ".pdf",通过循环变量x为每个PDF添加唯一编号后缀,生成的文件会是FileName_0.pdf、FileName_1.pdf……FileName_9.pdf,彻底避免覆盖。 - 如果需要编号从1开始,只需调整初始值和循环条件:把
x = 0改成x = 1,Do While x < 10改成Do While x <= 10,这样会生成10个从1到10编号的文件。
可选优化(避免覆盖已有同名文件)
如果目标文件夹中可能存在之前生成的同名编号文件,可以添加文件存在检查,自动找到下一个可用编号:
Sub Print_Card_With_Check() ' Print_Card Macro Dim x As Integer Dim loc As String Dim basePath As String Dim fileName As String basePath = "C:\Folder\" fileName = "FileName" x = 0 Do While x < 10 Calculate ' 检查文件是否存在,直到找到可用编号 Do loc = basePath & fileName & "_" & x & ".pdf" x = x + 1 Loop Until Dir(loc) = "" ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=loc, _ OpenAfterPublish:=False, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ Quality:=xlQualityStandard, _ From:=1, To:=2 Loop End Sub
内容的提问来源于stack exchange,提问作者JR79
相关产品推荐
相关产品推荐

