我需要调整几张纸的大小以使它们始终保持相同的大小...然后将它们全部保存为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
答案 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