Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
在excel vba中选择图纸尺寸(非默认尺寸)_Vba_Excel_Printing_Excel 2013_Page Size - Fatal编程技术网

在excel vba中选择图纸尺寸(非默认尺寸)

在excel vba中选择图纸尺寸(非默认尺寸),vba,excel,printing,excel-2013,page-size,Vba,Excel,Printing,Excel 2013,Page Size,我有兄弟QL-720NW标签打印机,我想在上面打印一些标签 这台打印机有一卷宽62毫米的纸 当我试图打印一些东西到它,我需要设置页面,并定义页面大小。 如果页面大小不正确(宽度超过62毫米),打印机将无法打印任何内容 现在我的问题是,我正在使用excel和宏将一些数据发送到打印机。 我知道有一些预定义的页面大小()可以使用,但在我的例子中,它们都太大了 这里是我迄今为止的代码示例: Sub CreateTestCode() ' setting printer Dim objPrinter As

我有兄弟QL-720NW标签打印机,我想在上面打印一些标签

这台打印机有一卷宽62毫米的纸

当我试图打印一些东西到它,我需要设置页面,并定义页面大小。 如果页面大小不正确(宽度超过62毫米),打印机将无法打印任何内容

现在我的问题是,我正在使用excel和宏将一些数据发送到打印机。 我知道有一些预定义的页面大小()可以使用,但在我的例子中,它们都太大了

这里是我迄今为止的代码示例:

Sub CreateTestCode()

' setting printer
Dim objPrinter As String
objPrinter = ActivePrinter
ActiveSheet.PageSetup.PrintArea = Range("Img")
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
.PrintHeadings = False
.PrintGridlines = False
.RightMargin = Application.InchesToPoints(0.39)
.LeftMargin = Application.InchesToPoints(0.39)
.TopMargin = Application.InchesToPoints(0.39)
.BottomMargin = Application.InchesToPoints(0.39)
.PaperSize = xlPaperUser
.Orientation = xlLandscape
.Draft = False
End With

Dim printerName As String
printerName = "BrotherQL720NW Labelprinter on XYZ"

ActiveSheet.PrintOut Preview:=True, ActivePrinter:=printerName

ActivePrinter = objPrinter
End Sub
现在我有3个问题:

1:在.PaperSize=xlPaperUser处,我得到一个运行时错误“1004”。无法设置PageSetup类的纸张大小。这里怎么了

2:如何将纸张大小设置为62mm x 50mm

3:即使我将打印区域定义为范围(“Img”),它仍然打印整张图纸


顺便说一句,我对vba完全陌生,这是我第一次尝试使用vba。

问题1

xlPaperUser
是一种用户定义的纸张大小,其常数值为256。如果尚未定义,则可能会引发错误

问题2

无法在Excel中创建自定义纸张尺寸,但是可以在许多打印机上创建自定义纸张尺寸。在“页面设置”下,单击“选项”按钮。这将打开“打印机属性”对话框。使用此对话框将纸张大小更改为自定义大小,然后单击“确定”

然后在Excel中运行以下命令:
MsgBox PageSetup.PaperSize
。这将为您在Excel中指定给该纸张大小的新常量值。然后将宏中的
.PaperSize=xlPaperUser
更改为
.PaperSize=
&不管您刚刚找到的常量是什么

问题3


.PrintArea
接受字符串输入,而不是范围。将行更改为
ActiveSheet.PageSetup.PrintArea=Range(“Img”)。地址
,它应该可以工作。

我想补充一下。
您还可以添加此行
Application.Dialogs(xlDialogPageSetup).Show

例如:

Sub printGraphs()

Application.Dialogs(xlDialogPrinterSetup).Show
Application.Dialogs(xlDialogPageSetup).Show
    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintQuality = 1200
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlLandscape
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .PrintErrors = xlPrintErrorsDisplayed
    End With
        ActiveWorkbook.PrintOut From:=1, To:=3, Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

End Sub

这将提示用户根据所选打印机选择页面大小。我使用此选项一次打印包含多个选项卡的工作簿,并且只打印我想要的选项卡。

我认为您的答案是正确的,因此接受。但我想我永远也不会知道,因为我决定用C#做这项工作,并为macro.xlPaperUser创建一个DLL,这是如何定义的?似乎它可能是在打印机首选项页面大小中设置的?@zeta我的理解是xlPaperUser是由打印机定义的,这就是为什么不能使用VBA进行设置的原因。我并没有在问题中真正写下它,但整个想法是使一些标签(带有QR码)在excel表单上打印的自动化过程。应避免使用所有对话框。如果是对话框,我只会使用默认的打印对话框。