Board logo

标题: [问题求助] vbs如何实现:一张一张非连续打印某个word文件的某几页? [打印本页]

作者: ygqiang    时间: 2017-5-20 10:18     标题: vbs如何实现:一张一张非连续打印某个word文件的某几页?

本帖最后由 ygqiang 于 2017-5-20 10:20 编辑

vbs如何实现:一张一张非连续打印某个word文件的某几页?

xp或win7系统环境下,
运行vbs,提示输入哪几页,比如输入:2或者2-4,8或者3-6
打印机开机打印一也,打印完毕,停顿5-8秒,继续打印下一页。。。
打印机一张一张非连续打印,始终是停顿5-8秒,再打印下一页。

输入页面范围以后,后面默认打印就行,不需要弹出任何提示窗口。
作者: yu2n    时间: 2017-5-20 18:13

使用默認打印機,打印1份,指定2~4頁:
  1. Application.PrintOut True, True, wdPrintRangeOfPages, "", "", "", wdPrintDocumentContent, _
  2.         1, "2-4", wdPrintAllPages
复制代码

作者: ygqiang    时间: 2017-5-20 22:56

回复 2# yu2n


    1,能否弹出窗口提示,手动输入页面范围?
2,打印出来1页,停顿5到8秒,再继续打印后续的页面,一直这样停顿打印。
作者: ygqiang    时间: 2017-5-22 14:43

回复 2# yu2n


    还有个问题,这个vbs代码,是如何指定打印哪个/哪几个word文件的?
作者: yu2n    时间: 2017-5-22 15:18

本帖最后由 yu2n 于 2017-5-22 22:10 编辑

回复 4# ygqiang


    VBS 列印 WORD DOC 檔,想要多慢就多慢,急死等單人專用。        By Yu2n
可指定列印範圍,可指定每頁等待時間。(Ps: 这个需求真的很搞笑)
  1. Option Explicit
  2. '************************************************************************
  3. 'VBS 列印 WORD DOC 檔,想要多慢就多慢,急死等單人專用。 By Yu2n
  4. '可指定列印範圍,可指定每頁等待時間。(Ps: 这个需求真的很搞笑)
  5. '************************************************************************
  6. Main
  7. Sub Main()
  8. Const wdPrintRangeOfPages = 4
  9. Const wdPrintDocumentContent = 0
  10. Const wdNumberOfPagesInDocument = 4
  11. Dim strDoc, lngSecond
  12. strDoc = "C:\Test.doc" '要列印的 DOC 檔路徑
  13. lngSecond = 5 '每頁列印延時--5秒
  14. '******************************
  15. '打開 DOC,獲取 Word 對象
  16. '******************************
  17. On Error Resume Next
  18. Dim oWord, oDoc, nPages, sPages, sPages2, vT, nT
  19. Set oWord = GetObject(, "Word.Application")
  20. If Err Then
  21. Err.Clear
  22. Set oWord = CreateObject("Word.Application")
  23. If Err Then
  24. MsgBox "沒有安裝 Office Word !", vbQuestion, WScript.ScriptName
  25. Exit Sub
  26. End If
  27. End If
  28. Set oDoc = GetObject(strDoc)
  29. If Err Then
  30. MsgBox """" & strDoc & """ 不存在,或者不是 Office Word 文件!", vbQuestion, WScript.ScriptName
  31. oDoc.Close False
  32. oWord.Quit
  33. Exit Sub
  34. End If
  35. On Error GoTo 0
  36. oDoc.Activate
  37. Set oWord = oDoc.Application
  38. oWord.Application.DisplayAlerts = False
  39. oWord.Visible = True
  40. '******************************
  41. '獲取用戶輸入頁數,格式化(2, 6-10 => 2,6,7,8,9,10)
  42. '******************************
  43. nPages = oDoc.Application.Selection.Information(wdNumberOfPagesInDocument)
  44. sPages = InputBox("請輸入要列印的頁碼和頁面範圍,以逗號隔開。例如,""2, 6-10"" 會就列印第 2 頁及第 6 至第 10 頁。","請輸入要列印的頁碼範圍:","1-" & nPages)
  45. For Each vT In Split(sPages, ",")
  46. If InStr(CStr(vT), "-") <= 0 Then
  47. If sPages2 <> "" Then sPages2 = sPages2 & ","
  48. sPages2 = sPages2 & CStr(vT)
  49. Else
  50. For nT = Split(CStr(vT),"-")(0) To Split(CStr(vT),"-")(1)
  51. If sPages2 <> "" Then sPages2 = sPages2 & ","
  52. sPages2 = sPages2 & CStr(nT)
  53. Next
  54. End If
  55. Next
  56. '******************************
  57. '打印頁面(每次列印1頁後延時列印下一頁)
  58. '******************************
  59. For nT = 0 To UBound(Split(sPages2, ","))
  60. oDoc.Application.PrintOut True, True, wdPrintRangeOfPages, "", "", "", wdPrintDocumentContent, 1, CStr(Split(sPages2, ",")(nT)), 0
  61. If nT < UBound(Split(sPages2, ",")) Then WScript.Sleep lngSecond * 1000
  62. Next
  63. '******************************
  64. '關閉 Word
  65. '******************************
  66. oDoc.Close False
  67. oWord.Quit
  68. MsgBox "列印完成 !", vbQuestion, WScript.ScriptName
  69. End Sub
复制代码

作者: ygqiang    时间: 2017-5-22 17:57

回复 5# yu2n


    多谢。win7 64,测试有错误。

行37   字符2
远程服务器不存在或不可用:oWord.Visible
代码:800a01ce
作者: yu2n    时间: 2017-5-22 22:10

回复 6# ygqiang


    5 楼代码的第 15 行,那个 DOC 文件在我的电脑上,你要改成你自己的。
作者: ygqiang    时间: 2017-5-23 08:15

回复 7# yu2n


    对啊,15行代码,已经修改为自己的了。

strDoc = "C:\1.doc"
作者: ygqiang    时间: 2017-5-23 08:21

本帖最后由 ygqiang 于 2017-5-23 08:51 编辑

回复 7# yu2n


win7 64系统本地安装打印机。
    xp系统,通过局域网共享这个打印机。
测试代码可以打印。
但是输入页数1,3,是连续打印2页。并没有间隔5秒打印。

还有个小问题。
strDoc = "C:\1.doc",这个修改为strDoc = "1.doc"

是不是默认打印vbs当前目录下的1.doc文件?谢谢
作者: yu2n    时间: 2017-5-25 11:00

回复 9# ygqiang


   
是不是默认打印vbs当前目录下的1.doc文件?
???

    你自己試就知道了。何來此問?

    你肯定沒試過一次。很好,我都試過幾次了。
作者: ygqiang    时间: 2017-5-25 16:19

回复 10# yu2n


    多谢。搞定了。

        strDoc = "C:\1.doc"                '要列印的 DOC 檔路徑
        lngSecond = 20         '每頁列印延時--20秒
作者: zz100001    时间: 2017-5-26 09:54

余二恩啥时候变台湾的了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2