注册 登录
编程论坛 VB6论坛

批量打印excel的一段代码,F8能打印出列表中所有excel文件,为何F5只能打印一张?

xingming022 发布于 2019-05-16 12:43, 1687 次点击

Private Sub Command3_Click()
     Dim RetVal As Long
     Dim ShExInfo As SHELLEXECUTEINFO
     
     Dim I As Integer
     Dim Mypathname As String
     For I = 0 To List1.ListCount - 1
             Mypathname = List1.List(I)

             With ShExInfo
                 .cbSize = Len(ShExInfo)
                 .fMask = &H40
                 .hwnd = 0
                 .lpVerb = "print"
                 .lpFile = Mypathname
                 .lpParameters = ""
                 .lpDirectory = vbNullChar
                 .nShow = 0
             End With
            
             RetVal = ShellExecuteEx(ShExInfo)
            
             If RetVal = 0 Then
                 Exit Sub
             End If
     Next
 End Sub


 Public Type SHELLEXECUTEINFO
      cbSize As Long
      fMask As Long
      hwnd As Long
      lpVerb As String
      lpFile As String
      lpParameters As String
      lpDirectory As String
      nShow As Long
      hInstApp As Long
      lpIDList As Long
      lpClass As String
      hkeyClass As Long
      dwHotKey As Long
      hIcon As Long
      hProcess As Long
  End Type
3 回复
#2
wufuzhang2019-05-16 22:31
回复 楼主 xingming022
你可以尝试一下,执行RetVal = ShellExecuteEx(ShExInfo)后暂停几秒钟(可以用Sleep(5000)函数),
这样打印机有打印的时间,然后再执行后面的语句。
#3
xingming0222019-05-20 17:59
回复 2楼 wufuzhang
非常感谢,已经搞定了,再请教下,为何打印excel,需要sleep,打印word或者txt就不用?
#4
wufuzhang2019-05-20 18:09
回复 3楼 xingming022
我猜可能是Excel是网格,在打印时,需要给打印机传送的数据比较多;
而Word和txt格式数据比较少,很短的时间就传送完了,
其实,当Word、txt要打印的内容非常多时,可能也要用Sleep来等待。
1