【问题标题】:VBA set print job using different pages from 2 worksheetsVBA 使用 2 个工作表中的不同页面设置打印作业
【发布时间】:2014-04-10 13:05:29
【问题描述】:

这让我很困惑,找不到任何接近解决方案的东西,感谢任何帮助。

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

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

有人敢挑战吗?

谢谢

【问题讨论】:

    标签: excel vba


    【解决方案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
    

    这是通用的“录制宏”代码。但它是你想要的基础。您必须修改 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$"
    

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

    【讨论】:

    • 我已经尝试过类似的尝试,但我忘了提到的是,这个宏的实际工作簿超过 80 个工作表,需要打印的页面是最后 60 个左右,所有工作表都已设置页面但前 20 个工作表的页码各不相同。我认为 ActiveWorkBook.print 可以工作,但 VBA 代码必须确定哪个工作簿页码来自前一张表,然后后续页码来自 ActiveSheet。
    • 每张纸上是否只有一页需要打印?
    • 基本上没有办法动态设置打印区域。除非只有 1 个工作表,否则您无法使用页码定义要在哪些工作表中打印哪些页面。如果有一个工作表,您只需选择第 1 页 - 随便或 5 - 7 等...但多张工作表显然不起作用。以及页面上适合的列/行数根据列标题/数据等在工作表之间有所不同。因此您只需使用页面设置并在页面上选择适当的打印区域。
    • 如果您在每一页上设置打印区域,则打印整个工作簿将起作用,因为它只会打印每张纸的特定打印区域。
    猜你喜欢
    • 2014-02-21
    • 2020-08-30
    • 2016-01-03
    • 2018-11-15
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    相关资源
    最近更新 更多