找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22026|回复: 11

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

[复制链接]
发表于 2017-5-20 10:18:55 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2017-5-20 10:20 编辑

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

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

输入页面范围以后,后面默认打印就行,不需要弹出任何提示窗口。
发表于 2017-5-20 18:13:33 | 显示全部楼层
使用默認打印機,打印1份,指定2~4頁:
  1. Application.PrintOut True, True, wdPrintRangeOfPages, "", "", "", wdPrintDocumentContent, _
  2.         1, "2-4", wdPrintAllPages
复制代码
 楼主| 发表于 2017-5-20 22:56:30 | 显示全部楼层
回复 2# yu2n


    1,能否弹出窗口提示,手动输入页面范围?
2,打印出来1页,停顿5到8秒,再继续打印后续的页面,一直这样停顿打印。
 楼主| 发表于 2017-5-22 14:43:58 | 显示全部楼层
回复 2# yu2n


    还有个问题,这个vbs代码,是如何指定打印哪个/哪几个word文件的?
发表于 2017-5-22 15:18:21 | 显示全部楼层
本帖最后由 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.         '******************************
  42.         '獲取用戶輸入頁數,格式化(2, 6-10 => 2,6,7,8,9,10)
  43.         '******************************
  44.         nPages = oDoc.Application.Selection.Information(wdNumberOfPagesInDocument)
  45.         sPages = InputBox("請輸入要列印的頁碼和頁面範圍,以逗號隔開。例如,""2, 6-10"" 會就列印第 2 頁及第 6 至第 10 頁。","請輸入要列印的頁碼範圍:","1-" & nPages)
  46.         For Each vT In Split(sPages, ",")
  47.                 If InStr(CStr(vT), "-") <= 0 Then
  48.                         If sPages2 <> "" Then sPages2 = sPages2 & ","
  49.                         sPages2 = sPages2 & CStr(vT)
  50.                 Else
  51.                         For nT = Split(CStr(vT),"-")(0) To Split(CStr(vT),"-")(1)
  52.                                 If sPages2 <> "" Then sPages2 = sPages2 & ","
  53.                                 sPages2 = sPages2 & CStr(nT)
  54.                         Next
  55.                 End If
  56.         Next
  57.        
  58.         '******************************
  59.         '打印頁面(每次列印1頁後延時列印下一頁)
  60.         '******************************
  61.         For nT = 0 To UBound(Split(sPages2, ","))
  62.                 oDoc.Application.PrintOut True, True, wdPrintRangeOfPages, "", "", "", wdPrintDocumentContent, 1, CStr(Split(sPages2, ",")(nT)), 0
  63.                 If nT < UBound(Split(sPages2, ",")) Then WScript.Sleep lngSecond * 1000
  64.         Next
  65.        
  66.         '******************************
  67.         '關閉 Word
  68.         '******************************
  69.         oDoc.Close False
  70.         oWord.Quit
  71.         MsgBox "列印完成 !", vbQuestion, WScript.ScriptName
  72.        
  73. End Sub
复制代码

评分

参与人数 2技术 +2 收起 理由
9zhmke + 1 学习
WindCat + 1 学习了

查看全部评分

 楼主| 发表于 2017-5-22 17:57:50 | 显示全部楼层
回复 5# yu2n


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

行37   字符2
远程服务器不存在或不可用:oWord.Visible
代码:800a01ce
发表于 2017-5-22 22:10:08 | 显示全部楼层
回复 6# ygqiang


    5 楼代码的第 15 行,那个 DOC 文件在我的电脑上,你要改成你自己的。
 楼主| 发表于 2017-5-23 08:15:55 | 显示全部楼层
回复 7# yu2n


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

strDoc = "C:\1.doc"
 楼主| 发表于 2017-5-23 08:21:54 | 显示全部楼层
本帖最后由 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文件?谢谢
发表于 2017-5-25 11:00:12 | 显示全部楼层
回复 9# ygqiang


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

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

    你肯定沒試過一次。很好,我都試過幾次了。
 楼主| 发表于 2017-5-25 16:19:53 | 显示全部楼层
回复 10# yu2n


    多谢。搞定了。

        strDoc = "C:\1.doc"                '要列印的 DOC 檔路徑
        lngSecond = 20         '每頁列印延時--20秒
发表于 2017-5-26 09:54:58 | 显示全部楼层
余二恩啥时候变台湾的了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:43 , Processed in 0.072905 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表