我设置了一个宏来打印一个大型数据集。它不适合所有在一张纸上(宽度方面,它可以根据需要在高度方向上延伸)。它在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
答案 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
视图类型之间的切换对于使其工作是必要的,但我完全忘记了原因。