在“打印单个范围”系列问题的最后一个问题中,我特此谦虚地向更知识渊博的读者询问如何将PageSetup对象从一个页面复制到另一个页面。
因为你可以简单Dest.PageSetup = Source.PageSetup
我必须创建同样的功能。缩小形式如下:
Public Sub CopyPageSetup(ByVal Source As Worksheet, ByRef Dest As Worksheet)
With Source.PageSetup
Call SetParam(.AlignMarginsHeaderFooter, Dest.PageSetup.AlignMarginsHeaderFooter)
' etc
Call SetParam(.Zoom, Dest.PageSetup.Zoom)
End With
End Sub
SetParam只是:
Public Sub SetParam(ByVal Source As Variant, ByRef Dest As Variant)
If Dest <> Source Then Dest = Source
End Sub
然而,这并没有复制页面设置 - 在调用此函数后,我立即调用tmp.PrintPreview
(其中tmp是一个临时工作表),输出与我从未调用过函数一样。
这是海市蜃楼(它对你有用吗?)如果它不是海市蜃楼,我需要做些什么来纠正这个?
答案 0 :(得分:2)
我的Excel版本(2003)不支持.AlignMarginsHeaderFooter属性,但我将zoom和BottomMargin属性复制到新页面就好了。
Public Sub CopyPageSetup(ByVal Source As Worksheet, ByRef Dest As Worksheet)
With Dest.PageSetup
.Zoom = Source.PageSetup.Zoom
.BottomMargin = Source.PageSetup.BottomMargin
End With
End Sub