设置页面布局以生成三页 pdf

问题描述 投票:0回答:3

我有一个可以从工作表创建 PDF 的宏。
根据用户的笔记本电脑,分页符和大小有所不同。
我读到这是由于屏幕分辨率/Windows 缩放造成的,这似乎是问题所在,因为每个用户在 Windows 的显示设置中都有不同的比例百分比。
我正在尝试在 VBA 中设置它。

With snQ.PageSetup
    .Zoom = False
    .FitToPagesTall = 1
    .FitToPagesWide = 3
End With
snQ.ResetAllPageBreaks
Set snQ.HPageBreaks(2).Location = snQ.Range("B74")
Set snQ.HPageBreaks(2).Location = snQ.Range("B146")

这会将打印区域设置为三页。
然而,三页之间的分页符不会根据每个人的不同而改变(或改变到错误的位置)。
似乎当我应用分页符时,页面布局从 1-3 页更改为 %,就好像我进入页面设置时,不再是 1-3,而是缩放 83%(在我的情况下)。

excel vba page-break
3个回答
0
投票

也许是这样的:

snQ.PageSetup.PrintArea = "$A$1:$K74"

snQ.PrintOut

snQ.PageSetup.PrintArea = "$A$75:$K146"

snQ.PrintOut

等等..


0
投票

PageSetup.Zoom 属性 返回或设置一个代表百分比(10% 到 400% 之间)的 Variant 值,Microsoft Excel 将按该百分比缩放工作表以进行打印。

snQ.PageSetup.Zoom = False

False 计算结果为 0,无效。 你可以尝试 100,即 100%(正常视图)。

snQ.PageSetup.Zoom = 100

这将删除所有分页符

snQ.ResetAllPageBreaks

没有程序化分页符

snQ.HPageBreaks.Count = 0

我猜OP正在使用

On Error Resume Next
,因为这会引发错误:

Set snQ.HPageBreaks(2).Location = snQ.Range("B74")

以下是添加分页符的正确方法:

snQ.HPageBreaks.Add Before:=snQ.Range("B74")
snQ.HPageBreaks.Add Before:=snQ.Range("B146")

但是这是添加水平分页符,并且代码将打印区域设置为 3 页宽

.FitToPagesWide = 3
,只有一页高
.FitToPagesTall = 1
。 使用
VPageBreaks
进行垂直分页符。

如果无法弄清楚,请考虑将每个页面附加到 pdf 中。 如果您需要对此进行澄清,请告诉我。


0
投票

最后,我选择分隔每个页面(每个页面都在自己的工作表中),然后在创建 pdf 时选择所有 3 个页面,然后再创建 pdf。 这将在一份 pdf 中创建 3 个连续的工作表。 每张纸都标记为 1 页宽、1 页高。 这种方法似乎适用于所有用户,无论其窗口缩放如何......

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.