Macro以相同的缩放比例打印两种不同的纸张尺寸



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

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

现在,这已经足够好了。不幸的是,当它缩小比例时,两张纸的比例都不一样,所以你不能把8.5x11放在11x17旁边,让行匹配。是否有将缩放从一个宏传递到另一个宏的方法?如果设置了.FitToPagesWide,那么.Zoom只返回false。还应该注意的是,数据集可以具有额外的2到4列的添加。所以,如果我为我的床单设置了一个特定的缩放,我觉得它不会在所有情况下都起作用。理想情况下,我希望只适合11x17,并让8.5x11在相同的比例。

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

    .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

我为一些报告做了这样的操作。基本上,我只是不断设置缩小一个缺口,直到没有垂直分页符。此时,您可以对第二个工作表应用相同的缩放。这将是未经测试的,但应该给你一个开始:

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

视图类型之间的切换是必要的,但我完全忘记了原因。

最新更新