【问题标题】:Page Set up for multiple worksheets and Print为多个工作表设置页面并打印
【发布时间】:2014-02-21 15:09:17
【问题描述】:

我有一本超过一百张的工作簿。我已经能够修复列宽和行高,使其成为每个的良好可打印格式。我很难订购代码来执行以下操作:

  1. 为每张纸设置打印区域 [这是可变的,因为每张纸可能包含不同数量的行] - 每张纸的第一行都有相同的标题,并且标题从 A1:N1 开始。所有数据都从第 2 行开始,根据每张纸向下多少行。

  2. 如果需要打印多页,我希望标题行成为每页的标题

  3. 将格式设置为横向

  4. 我希望缩放以适应一页中的所有列。如果它必须打印到多页,那将是如果有可能的行。

  5. 打印所有工作表

我知道下面的代码有 xlPortrait 作为它应该是横向的方向。我的问题是我无法进行初始部分。我一直在尝试分段进行,但似乎无法开始。任何朝着正确方向的帮助都会很棒。

 Sub SetupPrint()
Dim wkst As Worksheet
    For Each wkst In ActiveWorkbook.Sheets
        With wkst.PageSetup.PrintArea
        .Range(("A1"), Selection.SpecialCells(xlLastCell)).Select

        End With


        With wkst.PageSetup
        .PrintTitleRows = "$1:$1"
        .PrintTitleColumns = ""
        .Orientation = xlPortrait
        .FitToPagesWide = 1

        End With
    Next

End Sub

【问题讨论】:

  • 我想自动化这个过程。我意识到我可以设置横向,将所有列放在一页上,并通过选择所有工作表选项卡来打印所有工作表。我无法为每一页应用设置标题的第一行。我最终记录了我所做的并运行宏以将其应用于每个页面。然后我通过选择所有选项卡打印了所有工作表。
  • 我找到了我的解决方案,但我一直在尝试了解 VBA 可以做些什么来消除将来尽可能多的手动工作。有时成本效益不存在,但它可能在未来的某个时候有用。

标签: excel vba


【解决方案1】:

你基本上什么都有了。

如果每个工作表具有相同的列数和保存标题,则无需为每个工作表设置打印区域。只需指定将所有列都放在一页上,这将使它打印一页上的所有列,并且它将打印打印所有行所需的页数。

所以你有你的.PrintTitleRows = "$1:$1" 来做标题

你有肖像,但如上所述需要横向

fitToPagesWide = 1 我相信会适合每一页上的所有列

为了安全起见,您可以添加.FitToPagesTall = False

然后要打印的代码是ActiveWorkbook.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False

我不知道 collat​​e 是什么.. 尝试一下。

基本上我得到这段代码的方式是我去查看-宏的-记录宏 然后我将工作簿中的页面布局设置为我想要的,然后我停止宏并检查代码,它有代码来设置我所做的所有设置。

另一种选择 - 没有真正的理由为此使用 VBA。转到页面布局选项卡上的“打印标题”以在每页上打印列标题,然后按 CTRL+P 进行打印,您可以在那里设置所有其他打印设置,包括一页上的所有列,然后确保将其设置为“打印整个工作簿”.. 这将完成相同的操作

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    相关资源
    最近更新 更多