在相同的缩放下打印两张不同的纸张尺寸的macros

我设置了一个macros来打印一个大的数据集。 它不适合在一张纸上(宽度方向,它可以根据需要在高度方向上延伸)。 它在11×17(Macro1)上打印2/3的数据,在8.5×11(Macro2)上打印1/3的数据。 为了使它适合,我正在使用以下内容:

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

现在,这工作得很好。 不幸的是,当它缩小的时候,两张纸的比例是不一样的,所以你不能把8.5×11放在11×17的旁边,而且行也要匹配。 反正有一个macros从一个macros到另一个macros? 如果设置.FitToPagesWide ,则.Zoom只返回false。 还应该注意的是,数据集可能会增加2到4列。 所以如果我为纸张设置一个特定的缩放比例,我觉得在任何情况下都不行。 理想情况下,我希望只适合11×17,并且8.5×11的规模相同。

编辑我使用了接受的答案,并删除了我的macros几个不必要的项目。 最终的代码如下:

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

编辑2当前代码迭代包括几个步骤来debugging。

  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 

我做了一些这样的报道。 基本上我只是不断设置放大缩小,直到没有垂直分页符。 在这一点上,你可以应用相同的缩放到第二张工作表。 这将是未经testing,但应该给你一个开始:

 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 

视图types之间的切换是必要的,以使其工作,但我忘记了为什么。