使用 VBScript 代码更改 Excel 中的边距

cdo*_*ion 4 vbscript excel vba

我有一个脚本,当前接收 Excel 文档并将其转换为报告(仍为 Excel 格式),分为两张表:UPLOAD 和 PRINTOUT。

上传表显示从原始 Excel 文档中获取的所有信息,并将其过滤到报告的正确列/行中。打印输出表采用上传表并进一步格式化以准备实际打印输出。

问题是,我正在尝试应用 Orientation 和 Margin PageSetup 参数,但它只是忽略了它们。无论我做什么,页面格式都不会改变。

主要是,我需要更改这些参数(边距以英寸为单位):

  • 景观方向
  • 左边距 (0.36)
  • 右边距 (0.25)
  • 顶部和底部边距 (0.5)
  • 页眉和页脚边距为 (0.25)

这是我认为存在问题的代码:

'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)

Abe*_*old 6

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)