cdo*_*ion 4 vbscript excel vba
我有一个脚本,当前接收 Excel 文档并将其转换为报告(仍为 Excel 格式),分为两张表:UPLOAD 和 PRINTOUT。
上传表显示从原始 Excel 文档中获取的所有信息,并将其过滤到报告的正确列/行中。打印输出表采用上传表并进一步格式化以准备实际打印输出。
问题是,我正在尝试应用 Orientation 和 Margin PageSetup 参数,但它只是忽略了它们。无论我做什么,页面格式都不会改变。
主要是,我需要更改这些参数(边距以英寸为单位):
这是我认为存在问题的代码:
'Start printout sheet
Set objLastSheet = objWorkbook.Worksheets("Upload")
Set objWorksheet = objWorkbook.Worksheets("Upload")
objWorksheet.Copy, objLastSheet
Set objWorksheet2 = objWorkbook.Worksheets("Upload (2)")
objWorksheet2.Name = "Printout"
Set objRange = objWorksheet2.Pagesetup
Set objRange.PageSetup.Orientation= xlLandscape
Set objRange.PageSetup.LeftMargin = Application.InchesToPoints(0.36)
Set objRange.PageSetup.RightMargin = Application.InchesToPoints(0.25)
Set objRange.PageSetup.TopMargin = Application.InchesToPoints(0.5)
Set objRange.PageSetup.BottomMargin = Application.InchesToPoints(0.5)
Set objRange.PageSetup.HeaderMargin = Application.InchesToPoints(0.25)
Set objRange.PageSetup.FooterMargin = Application.InchesToPoints(0.25)
Run Code Online (Sandbox Code Playgroud)
我没有为上传编写其余的代码,我只是被要求使边距起作用,所以我一直在尝试将任何需要添加到现有代码中。不确定它是语法还是我只是遗漏了一些重要的东西。先感谢您!
编辑:当前代码。方向是横向并且现在适合一页宽,但是边距参数仍然没有使用(当我去打印预览时,它仍然显示“正常边距”)。
Const xlLandscape = 2
With objWorksheet2.Pagesetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.LeftMargin = Application.InchesToPoints(0.5)
.RightMargin = Application.InchesToPoints(0.5)
.TopMargin = Application.InchesToPoints(0.5)
.BottomMargin = Application.InchesToPoints(0.5)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
End With
Run Code Online (Sandbox Code Playgroud)
最终编辑
出于某种原因,我的 Application.InchesToPoints() 函数不起作用。也许我没有包含库或其他东西,但是,当我手动转换值并输入它们的点值时,它起作用了。
最终解决方案:
Const xlLandscape = 2
With objWorksheet2.Pagesetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.LeftMargin = 26
.RightMargin = 18
.TopMargin = 36
.BottomMargin = 36
.HeaderMargin = 18
.FooterMargin = 18
End With
Run Code Online (Sandbox Code Playgroud)
ObjRange = objWorksheet2.Pagesetup 所以你应该使用:
Set objRange.Orientation= xlLandscape
Run Code Online (Sandbox Code Playgroud)
等等。
更确切地说:
With objWorksheet2.Pagesetup
.Orientation= xlLandscape
.LeftMargin = Application.InchesToPoints(0.36)
.RightMargin = Application.InchesToPoints(0.25)
.TopMargin = Application.InchesToPoints(0.5)
.BottomMargin = Application.InchesToPoints(0.5)
.HeaderMargin = Application.InchesToPoints(0.25)
.FooterMargin = Application.InchesToPoints(0.25)
End With
Run Code Online (Sandbox Code Playgroud)