3

我设置了一个宏来打印一个大数据集。它不能全部放在一张纸上(宽度方向,它可以根据需要在高度方向延伸)。它在 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
4

1 回答 1

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

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

于 2013-02-23T00:02:23.600 回答