|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 weiyingde 于 2020-2-25 15:24 编辑
打印双面时,还未停止的打印机却停止工作,不知何故。
Sub 半自动双面打印()
Dim PgNub As Integer, PgDubl As Boolean, x%, y%, z%
PgDubl = True
'CreateObject("WScript.Network").SetDefaultPrinter = "Lenovo M7206"
Application.ActivePrinter = "Lenovo M7206"
With ActiveDocument
.Content.Find.Execute "^13[ ^t" & ChrW(160) & "^11^13]{1,}", , , 2, , , , , , "^p", 2
For x = .Paragraphs.Count To 1 Step -1
If VBA.Len(.Paragraphs(x)) = 1 Then .Paragraphs(x).Range.Delete
Next
PgNub = .Content.Information(wdActiveEndAdjustedPageNumber)
'ActiveDocument.ActiveWindow.Panes(1).Pages.Count
'ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
FilNm = Split(ThisDocument.Name, ".")(0)
If PgNub Mod 2 <> 0 Then PgDubl = False
If MsgBox("你要打印" & FilNm & "吗?" & vbCr & "打印按“是”", vbOKCancel, Space(15) & "温馨提示") = False Then Exit Sub
If Len(.Content) = 1 Then Exit Sub
For y = 1 To PgNub Step 2
isr1 = isr1 & y & ","
cnt1 = cnt1 + 1
Next
Options.PrintReverse = False ' 设置顺序打印
isr1 = Left(isr1, Len(isr1) - 1)
tm1 = Timer
.PrintOut Range:=wdPrintRangeOfPages, Item:=wdPrintDocumentContent, Copies:=1, Pages:=isr1
Do
DoEvents
Loop While Timer - tm1 < 7 * cnt1
msg = IIf(PgDubl = False, "因文档总页数是奇数" & vbCr & "请将最后一页取下来!", "")
'打印双面时,已经打完单面的打印机却停止工作,以下代码,不起作用,为什么?
If MsgBox("单面已经打完,请把纸张反过来," & vbCr & "接着打印双面!" & msg, vbInformation, Space(25) & "温馨提示") = True Then
Options.PrintReverse = True '打印偶数页,逆序打印!
For z = IIf(PgDubl = False, PgNub - 1, PgNub) To 1 Step -2
isr2 = isr2 & z & ","
cnt2 = cnt2 + 1
Next
isr2 = Left(isr2, Len(isr2) - 1)
tm2 = Timer
.PrintOut Range:=wdPrintRangeOfPages, Item:=wdPrintDocumentContent, Copies:=1, Pages:=isr2
Do
DoEvents
Loop While Timer - tm2 < 7 * cnt2
End If
Options.PrintReverse = False '回复顺序打印
'.Close , False
End With
End Sub
|
|