我设置了一个宏来打印一个大数据集。它不能全部放在一张纸上(宽度方向,可以根据需要延伸高度方向)。它将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
视图类型之间的切换是必要的,但我完全忘记了原因。