VBA使用2个工作表中的不同页面设置打印作业

时间:2014-03-07 11:42:59

标签: excel-vba vba excel

这让我感到难过,找不到任何接近解决方案的东西,任何帮助都会受到赞赏。

示例 - 我有一个包含多个工作表A到H的工作簿。每个工作表在两个页面上具有相同的页面设置(范围),每个页面设置不连接到另一个页面(页面之间的空白行)。所有工作表都受到保护。

任务 - 我想在工作表D上放置一个宏按钮,它将在一个打印作业中打印工作表C的第2页和工作表D的第1页。我的想法是,在打印机设置为双面打印的情况下,我将两页打印在一张纸的两侧。 我已经看到一些解决方案需要首先转换为pdf,但如果我可以避免它,则不愿意。

有人接受挑战吗?

由于

1 个答案:

答案 0 :(得分:1)

这里你去:

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

这是通用的“Recorded Macro”代码。但它是你想要的基础。您将需要修改SLIGHLTY以使用您的设置。

基本上你要做的是,你要为你想要打印的纸张设置打印区域。所以,在我的excel书中,该页面上的{1}}表示{1}}。那么:ActiveSheet.PageSetup.PrintArea = "$A$1:$D$47"是另一张表中的第2页。然后你必须将这两张纸移动到第一和第二(或它不会工作)。第ActiveSheet.PageSetup.PrintArea = "$A$48:$D$94"行打印整个工作簿,但它只从第1页到第2页打印。所以基本上,我将两张不同纸张的打印区域设置为两张纸各1页。因此,在打印这些纸张时,它只会打印打印区域。然后这两张纸是第一张和第二张,所以当打印第1页到第2页时,它只会从两张纸打印1页。如果您将打印机设置为2面,它将打印在1页的两面。

要动态设置打印区域,可以使用循环处理行,如果它们不是空白,则将它们添加到打印区域。如何拥有多个打印区域的示例: ActiveWorkbook.PrintOut From:=1, To:=2, Copies:=1, Collate:=True, _ IgnorePrintAreas:=False

并且你不得不像上面那样使用单元格地址。所以,如果我开始摆弄一个打印范围,并希望添加另一个我可以做的:

ActiveSheet.PageSetup.PrintArea = "$A$1:$D$14,$A$19:$D$

所以用循环来适应它,它会让你更接近。