我用个For循环将打印,但打印机最终打出来的并没按我流水号的顺序。比如我是按1到100的流水顺序,打出来有时是1到10,10下面可能不是11是12,13,11跑到后面去了 Private Sub mnPRINT_Do_Click(Index As Integer)
Dim intPage As Integer
Dim intRes As Integer
Dim lRetval&
Dim StopTheTimer As Boolean Select Case Index
Case 0 '仅打印一页
If mViewNo > 0 Then
Call StatusMessage("印刷中...")
Call Page_Print(mViewNo)
Call StatusMessage("")
End If
Case 1 '全部印刷
Screen.MousePointer = vbHourglass
For intPage = 1 To UBound(mViewFile)
Call StatusMessage(" " & CStr(intPage) & "/" & CStr(UBound(mViewFile)) & _
Call Page_Print(intPage)
DoEvents(
Next intPage
Call StatusMessage("")
Screen.MousePointer = vbDefault
Case 3 '印刷设定
'
On Error Resume Next
brwPrint.Visible = True
brwPrint.ExecWB OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT
brwPrint.Visible = False
End Select
End Sub
Private Sub Page_Print(ByVal iPrintPageNo As Integer)
Dim intRes As Integer
On Error Resume Next
With brwPrint
.Visible = True
mPrintViewFlg = False
.Navigate2 mViewFile(iPrintPageNo) '
Do Until mPrintViewFlg
intRes = DoEvents() '表示完了
Loop
.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 0, 0 .Visible = False
End With
End Sub
Dim intPage As Integer
Dim intRes As Integer
Dim lRetval&
Dim StopTheTimer As Boolean Select Case Index
Case 0 '仅打印一页
If mViewNo > 0 Then
Call StatusMessage("印刷中...")
Call Page_Print(mViewNo)
Call StatusMessage("")
End If
Case 1 '全部印刷
Screen.MousePointer = vbHourglass
For intPage = 1 To UBound(mViewFile)
Call StatusMessage(" " & CStr(intPage) & "/" & CStr(UBound(mViewFile)) & _
Call Page_Print(intPage)
DoEvents(
Next intPage
Call StatusMessage("")
Screen.MousePointer = vbDefault
Case 3 '印刷设定
'
On Error Resume Next
brwPrint.Visible = True
brwPrint.ExecWB OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT
brwPrint.Visible = False
End Select
End Sub
Private Sub Page_Print(ByVal iPrintPageNo As Integer)
Dim intRes As Integer
On Error Resume Next
With brwPrint
.Visible = True
mPrintViewFlg = False
.Navigate2 mViewFile(iPrintPageNo) '
Do Until mPrintViewFlg
intRes = DoEvents() '表示完了
Loop
.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 0, 0 .Visible = False
End With
End Sub
Do Until mPrintViewFlg
intRes = DoEvents() '表示完了
Loop
而是使用事件机制,在DocumentComplete里写打印当前页代码。
我如果在Page_Print()函数前面延长1秒钟的话,打印的顺序就没有颠倒的。,大师,你认为还有什么可能呢?
我的打印页中没有frame阿。请指教
大师,我用
For intPage=1 To UBound(mViewFile)
Call Page_Print(intPage)
Next intPage 这样For循环来批量打印没有问题吧,实在不好意思。问这么多。