Excel多个sheet导出pdf

本文提供两种VBA脚本解决方案,一种用于将单个Excel文件中的多个sheet转换为单独的PDF文件,另一种则针对文件夹内多个Excel文件的所有sheet进行批量转换。方案包括错误处理、打印区域设置及PDF质量调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景一:一个Excel格式的预算表下有多个sheet
需求一:将多个sheet导出为一个pdf
解决方案:打开有多个sheet的excel工作表,打开vba编辑器(快捷键为Alt和F11一起摁下),然后粘贴以下代码:

Sub ConvertPDF()
strPath = ThisWorkbook.Path & "\"
For Each s In Sheets
If s.Name <> "w" Then   'w为当前excel表的名称
s.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPath & s.Name & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End If
Next
End Sub

点击运行,运行结果如下:
在这里插入图片描述
最后使用Adobe Acrobat DC按顺序合并以上pdf即可。

背景二:一个文件夹下有有多个拥有多个sheet的Excel表格
需求二:将所有Excel中所有sheet导出为一个pdf
解决方案:vba编辑器就不多说了,打开复制以下代码:

Sub ExportToPDF()
Dim Arr, Str1, Str2, Shp, myPath1, myPath2, MyPos, Na, Sh, i1, i2
On Error Resume Next               
Application.ScreenUpdating = False 
Application.DisplayAlerts = False  
Arr = Array(".xls", ".xlsx", ".xlsm")  
myPath1 = "D:\qwerdf\"        '文件的路径粘贴到这里
myPath2 = myPath1 & "zxcv\"   '导出的路径这是好
MkDir myPath2                '新建文一个件夹
Set fs = CreateObject("Scripting.FileSystemObject") 
Set fo = fs.GetFolder(myPath1)  
For Each fi In fo.Files  
 i1 = 0
 i2 = 0
 Na = fi.Name  
 Do
  i1 = MyPos   
  i2 = i2 + 1
  MyPos = InStr(MyPos + 1, Na, ".") 
  If MyPos = 0 And i2 <> 1 Then
   Str1 = Right(Na, Len(Na) - i1 + 1) 
   Str2 = Left(Na, i1 - 1) & ".pdf"   
   If UBound(Filter(Arr, Str1)) = 0 Then  
    Workbooks.Open Filename:=myPath1 & Na 
    For Each Sh In Workbooks(Na).Sheets   
     Sh.PageSetup.Zoom = 80  
    Next
    Workbooks(Na).ExportAsFixedFormat Type:=xlTypePDF,  Filename:=myPath2 & Str2, Quality:=xlQualityStandard   
    Workbooks(Na).Close 
   End If
   Exit Do 
  End If
 Loop
Next
Application.DisplayAlerts = True  
Application.ScreenUpdating = True 
End Sub

与方案一相比,方案二的优势在于:方案一仅仅适用于一个excel多个sheet,不适用于多个excel多个sheet;方案二进行了纸张打印面积80%的设置;方案二添加了错误警告和提示。
需要注意的是:无论是方案一还是方案二对excel后缀格式的要求都是小写,一半预算软件导出的excel后缀为大写.XLS,会检测不到,所以在运行之前我们要把后缀改为小写。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值