我用语句:
Printer.Font.Name = "宋体"
Printer.Font.Size = 9
Printer.Print "小餐馆"
Printer.Print "==================="
Printer.Print "牛肉一盘_24"
Printer.Print "==================="
Printer.EndDoc
打印结果为"上边据2CM,下边据4.5CM"
我觉的太浪费了,能不能打完让打印机少走一些纸?就是想节省一些纸.不然客户是不会同意的.
Printer.Font.Name = "宋体"
Printer.Font.Size = 9
Printer.Print "小餐馆"
Printer.Print "==================="
Printer.Print "牛肉一盘_24"
Printer.Print "==================="
Printer.EndDoc
打印结果为"上边据2CM,下边据4.5CM"
我觉的太浪费了,能不能打完让打印机少走一些纸?就是想节省一些纸.不然客户是不会同意的.
printer.width=100
printer.height=250
Printer.Font.Name = "宋体"
Printer.Font.Size = 9
Printer.Print "小餐馆"
Printer.Print "==================="
Printer.Print "牛肉一盘_24"
Printer.Print "==================="
Printer.EndDoc
注释:初始化Dim printer1 as PrinterDim pageheader
Dim pagefooter
Dim pageleft
Dim pageright
Dim usewidth
Dim useheight
Dim i, j, k As Integer
Dim word As String
Dim startx
Dim starty
Dim startyline ‘ 用来纪录打印竖线的起点Dim endyline ’ 用来纪录打印竖线的末点设置页面参数pageheader = 25
pagefooter = 25
pageleft = 20
pageright = 20
With printer1
.PaperSize = 9
.ScaleMode = 6
.FontBold = True
.ScaleLeft = -20
.ScaleTop = -25
.ScaleWidth = 210 注释:设置为A4纸
.ScaleHeight = 297
usewidth = .ScaleWidth - 40
useheight = .ScaleHeight - 50
.CurrentX = 0
.CurrentY = 0
.DrawWidth = 5
End With
注释:打印标题
With printer1
.FontSize = 20
.CurrentX = (usewidth - .TextWidth(DataTitle)) / 2
.CurrentY = pageheader + .ScaleTop
End With
printer1.Print DataTitle
注释:打印副标题
printer1.FontSize = 15
word = DataTitle2
printer1.CurrentX = usewidth - printer1.TextWidth(word)
printer1.Print word
注释:打印第一条线 Line方法不能用在with ....end with里printer1.CurrentX = pageleft + printer1.ScaleLeft
startyline = printer1.CurrentY
注释:线宽printer1.Line -((printer1.ScaleLeft + printer1.ScaleWidth - pageleft), printer1.CurrentY)
printer1.FontSize = 10
注释:printer1.Print vbLf
printer1.CurrentY = printer1.CurrentY + 1
注释:打印第一个字段名
starty = printer1.CurrentY
printer1.CurrentX = ((printer1.ScaleWidth - 40) / 2 - printer1.TextWidth(C_Name)) / 2printer1.Print C_Name
注释:打印第二个字段名
printer1.CurrentX = usewidth / 2 + ((usewidth / 2 - printer1.TextWidth(R_Name)) / 2)
printer1.CurrentY = starty
printer1.Print R_Name
printer1.CurrentY = printer1.CurrentY + 1
注释:打印数据和横线,rownum为数据行数For i = 1 To rownum
注释:判断是否该页已打满
If printer1.CurrentY >= useheight Then 注释:打印横线
printer1.CurrentX = printer1.ScaleLeft + pageleft
printer1.Line -((printer1.ScaleLeft + printer1.ScaleWidth - pageleft), printer1.CurrentY)
printer1.CurrentY = printer1.CurrentY + 1
注释:打印三条竖线
endyline = printer1.CurrentY
printer1.Line (0, startyline)-(0, endyline)
printer1.Line (usewidth / 2, startyline)-(usewidth / 2, endyline)
printer1.Line (usewidth, startyline)-(usewidth, endyline)
注释:打印页号
With printer1
.CurrentX = (.ScaleWidth - .TextWidth(.Page)) / 2 - pageleft
.CurrentY = useheight + 3
End With
printer1.Print printer1.Page
printer1.NewPage
With printer1
.CurrentX = pageleft + .ScaleLeft
.CurrentY = pageheader + .ScaleTop
startyline = .CurrentY
End With
End If
注释:打印一行数据
printer1.CurrentX = ((printer1.ScaleWidth - 40) / 2 - printer1.TextWidth(C_DataArray(i))) / 2
starty = printer1.CurrentY
printer1.Print C_DataArray(i)
printer1.CurrentX = (printer1.ScaleWidth - 40) / 2 + ((printer1.ScaleWidth - 40) / 2 - printer1.TextWidth(R_DataArray(i) )) / 2
printer1.CurrentY = starty
printer1.Print R_DataArray(i)
printer1.CurrentY = printer1.CurrentY + 1
Next i
注释:打印最后一条横线
printer1.CurrentX = printer1.ScaleLeft + pageleft
printer1.Line -((printer1.ScaleLeft + printer1.ScaleWidth - pageleft), printer1.CurrentY)
endyline = printer1.CurrentY
注释:打印三条竖线
printer1.Line (0, startyline)-(0, endyline)
printer1.Line (usewidth / 2, startyline)-(usewidth / 2, endyline)
printer1.Line (usewidth, startyline)-(usewidth, endyline)
注释:打印页号
With printer1
.CurrentX = (.ScaleWidth - .TextWidth(.Page)) / 2 - pageleft
.CurrentY = useheight + 3
End With
printer1.Print printer1.Page
printer1.EndDoc
end sub
我用的系统是WINDOWS XP
打印机是用卷纸的,EPSON TM-U210D
还是跟原来的效果一样,没有用啊.