给你:
Sub Macro5()
Sheets("Sheet2").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$D$47"
Sheets("Sheet1").Select
ActiveSheet.PageSetup.PrintArea = "$A$48:$D$94"
ActiveWorkbook.PrintOut From:=1, To:=2, Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub
这是通用的“录制宏”代码。但它是你想要的基础。您必须修改 SLIGHLTY 才能使用您的设置。
基本上,您要做的是为要打印的工作表设置打印区域。所以它说ActiveSheet.PageSetup.PrintArea = "$A$1:$D$47"那是我的excel书中那张纸上的第1页。然后:ActiveSheet.PageSetup.PrintArea = "$A$48:$D$94" 是另一张纸的第 2 页。那么你必须将这两张纸移动到第一张和第二张(否则它不会工作)。 ActiveWorkbook.PrintOut From:=1, To:=2, Copies:=1, Collate:=True, _
IgnorePrintAreas:=False 行打印整个工作簿,但是,它只打印从第 1 页到第 2 页。所以基本上,我将 2 个不同工作表的打印区域设置为两个工作表各 1 页。所以在打印这些纸张时,它只会打印打印区域。那么这两张纸是第一张和第二张,所以当打印第 1 页到第 2 页时,它只会从两张纸上打印 1 页。如果您将打印机设置为 2 面,它将在 1 页的两面打印。
要动态设置打印区域,您可以使用循环来处理行,如果它们不是空白的,则将它们添加到打印区域。如何拥有多个打印区域的示例:
ActiveSheet.PageSetup.PrintArea = "$A$1:$D$14,$A$19:$D$
不幸的是,您需要像上面一样使用单元格地址。因此,如果我开始使用一个打印范围并想添加另一个打印范围,我可以这样做:
ActiveSheet.PageSetup.PrintArea = "$A$1:$D$14"
ActiveSheet.PageSetup.PrintArea = ActiveSheet.PageSetup.PrintArea & "$A$19:$D$"
所以用一个循环来适应它,它应该让你更接近。