Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBScript代码更改Excel中的页边距_Excel_Vbscript_Vba - Fatal编程技术网

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

使用VBScript代码更改Excel中的页边距,excel,vbscript,vba,Excel,Vbscript,Vba,我有一个脚本,目前可以接收Excel文档并将其转换为报告(仍为Excel格式),分为两张表:上载和打印输出 上载表显示从原始Excel文档中获取的所有信息,并将其过滤到报告的正确列/行中。打印输出表接受上传表并对其进行进一步格式化,以便为实际打印输出做好准备 问题是,我试图应用方向和边距页面设置参数,但它只是忽略了它们。无论我做什么,页面格式都不会改变 主要是,我需要更改这些参数(边距以英寸为单位): 景观定位 左边距(0.36) 右边距(0.25) 上下页边距(0.5) 页眉和页脚边距为(0

我有一个脚本,目前可以接收Excel文档并将其转换为报告(仍为Excel格式),分为两张表:上载和打印输出

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

问题是,我试图应用方向和边距页面设置参数,但它只是忽略了它们。无论我做什么,页面格式都不会改变

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

  • 景观定位
  • 左边距(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) 
我没有为上传编写其余的代码,我只是被要求让边距工作,所以我一直在尝试向现有代码添加任何需要的内容。不确定是语法问题还是我遗漏了一些重要的东西。提前谢谢你

编辑:当前代码。方向是横向的,现在适合一页宽,但页边距参数仍然不适用(当我转到打印预览时,它仍然显示“正常页边距”)

最终编辑

出于某种原因,我的应用程序.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

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

VBScript不知道xl contants的值。您可以用there值替换xl常量,也可以自己设置xl常量的值。 我更喜欢使用常量

常数xl=2

这使得研究更容易

.方向=xl

这应该对你有好处

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
用法:

设置工作表设置对象工作表2


您可能需要验证值的单位度量

如果已经在使用厘米或厘米,则不需要使用Application.InchesToPoints(…)函数,该函数接收以英寸为单位的值作为输入

下面使用以厘米为单位的值将活动工作表的页边距设置为“窄”

请注意,页面方向设置为“横向”


我希望这对你有帮助。非常感谢。和平。

By
usage
您的意思是您提出的代码应该在
Set-objRange=objWorksheet2
语句之后初始化吗?太好了,谢谢!一开始我确实需要添加常量xlscanner=2,但我错了。横向是所有的工作,但没有任何自定义边距设置已应用。对不起,有什么原因吗?
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
Set myOutput = Sheets(ActiveSheet.Name)

myOutput.PageSetup.Orientation = xlLandscape
myOutput.PageSetup.TopMargin = 1.91
myOutput.PageSetup.BottomMargin = 1.91
myOutput.PageSetup.LeftMargin = 0.64
myOutput.PageSetup.RightMargin = 0.64
myOutput.PageSetup.HeaderMargin = 0.76
myOutput.PageSetup.FooterMargin = 0.76