页面设置多个工作表和打印

时间:2014-01-29 16:52:26

标签: excel excel-vba vba

我有一张超过一百张的工作簿。我已经能够修复列宽和行高,这样每个都是一个很好的可打印格式。我无法按顺序执行以下操作:

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

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

  3. 将格式设置为横向

  4. 我希望缩放适合一页中的所有列。如果必须打印到多个页面,如果有行可能会打印。

  5. 打印所有工作表

  6. 我知道下面的代码将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
    

1 个答案:

答案 0 :(得分:0)

你基本上已经掌握了一切。

如果每个工作表具有相同的列数并保存标题,则您不需要为每个工作表设置打印区域。只需指定适合一页上的所有列,这将使其在1页上打印所有列,并打印出打印所有行所需的许多页面。

所以你已经得到了.PrintTitleRows = "$1:$1"标题

你已经获得了肖像,但正如所述需要成为风景

我认为fitToPagesWide = 1适合每页的所有列

出于安全考虑,您可以添加.FitToPagesTall = False

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

我不知道collat​​e是什么..试验。

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

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