调整多张工作表并保存为PDF

时间:2014-12-23 21:24:04

标签: excel vba excel-vba pdf

我需要调整几张纸的大小以使它们始终保持相同的大小...然后将它们全部保存为PDF文件。我不知道VBA,所以我正在做一个“frankstein代码”在这里和那里得到碎片。

我得到的是以下代码,适用于T1表格,但不适用于其他T2和T3表格。如何包含它们?

Sub Imprimir_PDF()

Dim ws As Worksheet
Dim lastRow As Long

Set ws = ThisWorkbook.Sheets("T1")

'find the last row with formatting, to be included in print range
lastRow = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row

ws.PageSetup.PrintArea = ws.Range("A2:CK" & lastRow).Address

ThisWorkbook.Sheets(Array("T1", "T2", "T3")).Select

Selection.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:="C:\PaintChecker\Camadas\temp.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub

2 个答案:

答案 0 :(得分:1)

这将获取您的代码,并使用短循环替换最后一行的部分,并在循环中设置所有三个页面的打印区域。

然后将所有三个打印到与数组的select语句指示的相同的PDF中。

未经测试的:

Sub Imprimir_PDF()

Dim lastRow As Long
Dim count As Long
Dim sheet As String

'find the last row with formatting, to be included in print range
For count = 1 To 3
    sheet = "T" & count
    lastRow = Sheets(sheet).UsedRange.SpecialCells(xlCellTypeLastCell).row
    Sheets(sheet).PageSetup.PrintArea = Sheets(sheet).Range("A2:CK" & lastRow).Address
Next count

ThisWorkbook.Sheets(Array("T1", "T2", "T3")).Select

Selection.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    fileName:="C:\PaintChecker\Camadas\temp.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub

答案 1 :(得分:0)

这是实现此目的的一种方法:

Sub MakePDFs()

    Dim sheetsToTouch As Variant
    sheetsToTouch = Array("T1", "T2", "T3")
    Dim sheetName As Variant

    For Each sheetName In sheetsToTouch
        Sheets(sheetName).Activate
        ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range("A2:CK" & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row).Address
        ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:="C:\PaintChecker\Camadas\" & sheetName & ".pdf", _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=True
    Next

End Sub