使用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

最新更新