宏以同一缩放打印两种不同的纸张尺寸

时间:2013-02-22 23:46:00

标签: excel excel-vba printing excel-2010 vba

我设置了一个宏来打印一个大型数据集。它不适合所有在一张纸上(宽度方面,它可以根据需要在高度方向上延伸)。它在11x17(Macro1)上打印2/3的数据,在8.5x11(Macro2)上打印剩余的1/3。为了使其适合,我使用以下内容:

    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = False

现在,这种方法运作良好。不幸的是,当它向下缩放时,两个工作表的比例都不相同,所以你不能将8.5x11放在11x17的旁边并让行匹配。无论如何将缩放从一个宏传递到另一个宏?如果您设置.FitToPagesWide,那么.Zoom只会返回false。还应注意,数据集可能还添加了2到4列。因此,如果我为我的纸张设置了特定的缩放,我觉得它在所有情况下都不起作用。理想情况下,我希望只适合11x17并使8.5x11处于相同的比例。

编辑我使用了已接受的答案并删除了一些不必要的项目。最终代码如下:

    .Zoom = 60
    With ActiveSheet
        Do While .VPageBreaks.Count > 2
            .PageSetup.Zoom = .PageSetup.Zoom - 1
            ActiveWindow.View = xlPageBreakPreview
            ActiveWindow.View = xlNormalView
        Loop
    End With

编辑2 当前代码迭代包括几个调试步骤。

    With ActiveSheet
        i = 1
        .PageSetup.Zoom = 80
        Do While .VPageBreaks.Count > 2
            .PageSetup.Zoom = .PageSetup.Zoom - 1
            ActiveWindow.View = xlPageBreakPreview
            ActiveWindow.View = xlNormalView
            Application.StatusBar = "Zooming Iteration #" & i & " :: Zoom at " & .PageSetup.Zoom
            i = i + 1
        Loop
        Application.StatusBar = False
    End With

1 个答案:

答案 0 :(得分:1)

我为某些报道做了类似的事情。基本上我只是将缩放设置为一个档位,直到没有垂直分页符。此时,您可以将相同的缩放应用于第二个工作表。这将是未经测试的,但应该给你一个开始:

With wsBig
    Do While .VPageBreaks.Count > 0
        .PageSetup.Zoom = .PageSetup.Zoom - 1
        ActiveWindow.View = xlPageBreakPreview
        ActiveWindow.View = xlNormalView
    Loop
    wsSmall.PageSetup.Zoom = .PageSetup.Zoom
End With

视图类型之间的切换对于使其工作是必要的,但我完全忘记了原因。