首页 > 解决方案 > 在不同页面上将工作表导出为 PDF

问题描述

我想在 PDF 文档中保护区域 A1 到 BJ10。由于这个区域相当宽,我想将这些部分分成三页。A1:R10、S1:BB10 和 BC1:BJ10。

我当前的代码是:

Sub ToPDF()
    
    Sheets(1).PageSetup.Orientation = 2
    
    Sheets(1).PageSetup.Zoom = False
    Sheets(1).PageSetup.FitToPagesWide = 1
    
    Sheets(1).Range("A1:BJ10").ExportAsFixedFormat xlTypePDF, Filename:=Path, Openafterpublish:=True
End Sub

如何将上述区域保存为 PDF,其中该区域的每个部分都有自己的页面?谢谢!

标签: excelvbapdfexportarea

解决方案


一种方法是将范围复制到临时工作簿,然后每个工作表都是一个单独的页面。

Option Explicit

Sub ToPDF()

    Dim wb As Workbook, ws As Worksheet
    Dim wbTemp As Workbook, wsTemp As Worksheet
    Dim ar, i As Long, sFilename As String

    ' ranges
    ar = Array("A1:R10", "S1:BB10", "BC1:BJ10")
    Set ws = ThisWorkbook.Sheets(1)
    Set wbTemp = Workbooks.Add(xlWBATWorksheet)

    sFilename = "ranges.pdf"
    With wbTemp
        For i = 0 To UBound(ar)
            If i > 0 Then .Worksheets.Add after:=.Sheets(i)
            With .Sheets(i + 1)
                .PageSetup.Orientation = 2
                .PageSetup.Zoom = False
                .PageSetup.FitToPagesWide = 1
                ws.Range(ar(i)).Copy .Range("A1")
            End With
        Next
        .ExportAsFixedFormat xlTypePDF, Filename:=sFilename, Openafterpublish:=True
        .Close False
    End With

End Sub

推荐阅读