excel - 使用 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
推荐阅读
- image-processing - 使用 puppeteer 下载时是否可以请求图像的 jpg 版本
- tensorflow - 不支持层(当训练使用 QAT 训练的 Keras 模型时)
- javascript - 如何在返回中显示从其他函数返回的 JSX?
- arrays - 查找动态分配数组的大小
- postgresql - 升级后缺少 Postgres 扩展
- r - 有没有一种更简单的方法可以在 data.frame 中创建具有 2 个以上级别的因子变量?
- flutter - 无法取消选中复选框
- python - 将网络抓取数据转换为数据框
- couchbase - Couchbase 服务器:连接上的缓慢 GET 操作
- django - 带有 model_to_dict(self) 的 ManyToManyField