多工作表指定不同区域生成PDF的VBA宏问题求助
修复多工作表指定不同区域导出PDF的问题
你的代码问题在于:仅通过Select选中单元格并不会改变工作表的打印区域设置,ExportAsFixedFormat执行时会默认使用工作表原有打印区域(或统一沿用第一个表的区域),导致两个表导出相同范围。
修复方案
通过给每个工作表单独设置打印区域,再执行导出操作,同时保留原打印区域避免影响后续使用:
Sub ExportSpecificRangesToPDF() Dim wsAdmin As Worksheet, wsSpui As Worksheet Dim originalPrintAreaAdmin As String, originalPrintAreaSpui As String Dim savePath As String ' 绑定目标工作表 Set wsAdmin = ThisWorkbook.Sheets("Administratief") Set wsSpui = ThisWorkbook.Sheets("Spuiwater TID") ' 保存原打印区域,导出后还原 originalPrintAreaAdmin = wsAdmin.PageSetup.PrintArea originalPrintAreaSpui = wsSpui.PageSetup.PrintArea ' 设置每个工作表的导出区域为打印区域 wsAdmin.PageSetup.PrintArea = "$A$1:$F$22" wsSpui.PageSetup.PrintArea = "$B$4:$F$17" ' 替换为你的PDF保存路径(或沿用原代码的FormName变量) savePath = FormName ' 导出指定工作表为单个PDF ThisWorkbook.Sheets(Array(wsAdmin.Name, wsSpui.Name)).ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=savePath, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=True ' 恢复原打印区域 wsAdmin.PageSetup.PrintArea = originalPrintAreaAdmin wsSpui.PageSetup.PrintArea = originalPrintAreaSpui ' 释放对象 Set wsAdmin = Nothing Set wsSpui = Nothing End Sub
关键说明
- 避免使用
Activate/Select:直接操作工作表对象更稳定高效,减少运行错误 - 保留原打印区域:导出完成后还原初始设置,不影响工作表的常规使用
IgnorePrintAreas:=False:确保导出时严格使用我们设置的打印区域(设为True会忽略打印区域,导出整个工作表)
内容的提问来源于stack exchange,提问作者Seculto
相关产品推荐
相关产品推荐

