永发信息网

VB 打印 问题

答案:1  悬赏:50  手机版
解决时间 2021-04-04 23:25
  • 提问者网友:美人性情
  • 2021-04-04 10:42
Sub a()
c = InputBox("开始序号")
b = InputBox("结束序号")
For i = c To (b - c + 1)
Sheets("sheet1").Cells(2, 8) = Sheets("sheet1").Cells(2, 8) + 1
Sheets("sheet1").Cells(5, 2) = Sheets("sheet2").Cells(1 + i, 3)
Sheets("sheet1").Cells(6, 4) = Sheets("sheet2").Cells(1 + i, 2)
PrintOut
Next i
End Sub
我用的是收据打印机,我写的这个代码不能实现一直打印,他打印了打一行数据就出纸了,怎么能实现一直打,打完全部才出纸,我sheet2中有上百行数据,要怎么改print呢??
Sub a()
c = InputBox("开始序号")
b = InputBox("结束序号")
For i = c To b
Sheets("sheet1").Cells(2, 8) = Sheets("sheet1").Cells(2, 8) + 1
Sheets("sheet1").Cells(5, 2) = Sheets("sheet2").Cells(1 + i, 3)
Sheets("sheet1").Cells(6, 4) = Sheets("sheet2").Cells(1 + i, 2)
PrintOut
Next i
End Sub

这个才是
最佳答案
  • 五星知识达人网友:深街酒徒
  • 2021-04-04 11:37
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Private Sub Form_Load()

Dim hPrinter As Long, lNeeded As Long, lReturned As Long
Dim lJobCount As Long
OpenPrinter Printer.DeviceName, hPrinter, ByVal 0&
EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned
If lNeeded > 0 Then
ReDim byteJobsBuffer(lNeeded - 1) As Byte
EnumJobs hPrinter, 0, 99, 1, byteJobsBuffer(0), lNeeded, lNeeded, lReturned
If lReturned > 0 Then
lJobCount = lReturned
Else
lJobCount = 0
End If
Else
lJobCount = 0
End If
ClosePrinter hPrinter
If lJobCount = 0 Then
MsgBox "没有打印作业!"
Else
MsgBox "打印队列项: " + CStr(lJobCount), vbInformation
End If

End Sub
希望对你能有所帮助。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯