如何解决我可以使用VBA设置工作表以适合一页并用完整个页面
我有一个应用程序可以创建要打印的报告(工作表)。
Excel可以根据生成报告的用户来确定不同的页面打印区域。
我试图用
解决reportSheet.PageSetup.printArea = "A1:" & PageCorner
reportSheet.PageSetup.Zoom = False
reportSheet.PageSetup.FitToPagesTall = 1
reportSheet.PageSetup.FitToPagesWide = 1
我现在面临的问题是,我现在在打印预览页面的右侧得到了页边空白。经过测试(增加每行的行高)后,我确定这是由于Excel按比例缩小高度和宽度直到它们全部适合一页所致。
是否有一种方法可以使Excel不按比例缩小报表,而是独立缩小或拉伸宽度和高度,以便使用整个页面(可疑)?
如果没有,我计划创建一个脚本来选择要完成此操作的列的宽度,我想知道是否有人以前解决过此问题,并且可以通过解释您如何完成此操作来帮助我?
原因:报告中的图像在打印时需要一直到达页面右侧的末尾。当前出现白色边距。
解决方法
据我所知,在这种情况下,在应用适合页面高度的情况下,没有简单的方法告诉Excel扩展或缩小列以适合页面的宽度。
对于VBA解决方案,如果您希望拉伸/缩小与列宽成比例,则可以使用如下所示的方法:
reportSheet.PageSetup.PrintArea = "A1:" & PageCorner
reportSheet.PageSetup.Zoom = False
reportSheet.PageSetup.FitToPagesTall = 1
reportSheet.PageSetup.FitToPagesWide = 1
Dim pa As Range
Set pa = reportSheet.Range("Print_Area")
Dim HeightToWidth As Double
Select Case reportSheet.PageSetup.PaperSize
Case Is = xlPaperLetter: HeightToWidth = 8.5 / 11
Case Is = xlPaperLegal: HeightToWidth = 8.5 / 14
Case Is = xlPaperA4: HeightToWidth = 210 / 297
End Select
Dim MultFactor As Double
MultFactor = pa.Height * HeightToWidth / pa.Width
Dim col As Range
For Each col In pa.Columns
col.ColumnWidth = col.ColumnWidth * MultFactor
Next
编辑:
经过更多测试之后,即使将所有页边距都设置为零,Excel似乎也没有真正使用整个页面,因此存在一些差异,我需要对此进行调整。我注意到,使用字母格式时,如果将MultFactor乘以0.9,然后再将其应用于列,则可获得最佳结果(但这可能与您有所不同)。
col.ColumnWidth = col.ColumnWidth * MultFactor * 0.9
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。