我有一个脚本,当前接收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)
我没有编写剩余的代码用于上传,我只是被要求使边距有效,所以我一直在尝试添加现有代码所需的内容。不确定它的语法是否还是我错过了一些至关重要的东西。提前谢谢!
编辑:当前代码。方向是横向,现在适合一页宽,但保证金参数仍未采用(当我去打印预览时,它仍然显示"正常边距")。
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
最终编辑
出于某种原因,我的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
答案 0 :(得分:4)
ObjRange = objWorksheet2.Pagesetup所以你应该使用:
Set objRange.Orientation= xlLandscape
等
或者更确切地说:
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
答案 1 :(得分:1)
VBScript不知道xl的含义。你可以用那个值替换xl常量,也可以自己设置xl常量的值。 我更喜欢使用const
Const xlLandscape = 2
这使得研究更容易
.Orientation = xlLandscape
这应该是你的伎俩
Sub setWorksheetPageSetup(xlWS)
Const xlLandscape = 2
With xlWS.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
End Sub
用法:
setWorksheetPageSetup objWorksheet2
答案 2 :(得分:0)
您可能需要验证值的单位度量。
如果您已经在使用厘米或厘米,则不需要使用Application.InchesToPoints(...)函数,该函数接收以英寸为单位的值。
以下内容以厘米为单位将活动工作表的页边距设置为“窄”。
请注意,页面方向设置为“横向”。
2019-03-06T00:52:11.4389621Z ##[command]"C:\windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "d:\a\_temp\ed34e1a6-ccc4-4168-a15b-3bd5e273d9e7.cmd""
2019-03-06T00:52:11.4490377Z $TF_VAR_ARM_SUBSCRIPTION_ID
2019-03-06T00:52:11.4491943Z $TF_VAR_ARM_TENANT_ID
2019-03-06T00:52:11.4493642Z $TF_VAR_ARM_CLIENT_SECRET
2019-03-06T00:52:11.4495118Z $TF_VAR_ARM_CLIENT_ID
希望这对您有所帮助。谢谢。和平。