标题: [问题求助] 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頁:- Application.PrintOut True, True, wdPrintRangeOfPages, "", "", "", wdPrintDocumentContent, _
- 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: 这个需求真的很搞笑)
- Option Explicit
-
- '************************************************************************
- 'VBS 列印 WORD DOC 檔,想要多慢就多慢,急死等單人專用。 By Yu2n
- '可指定列印範圍,可指定每頁等待時間。(Ps: 这个需求真的很搞笑)
- '************************************************************************
- Main
- Sub Main()
-
- Const wdPrintRangeOfPages = 4
- Const wdPrintDocumentContent = 0
- Const wdNumberOfPagesInDocument = 4
-
- Dim strDoc, lngSecond
- strDoc = "C:\Test.doc" '要列印的 DOC 檔路徑
- lngSecond = 5 '每頁列印延時--5秒
-
- '******************************
- '打開 DOC,獲取 Word 對象
- '******************************
- On Error Resume Next
- Dim oWord, oDoc, nPages, sPages, sPages2, vT, nT
- Set oWord = GetObject(, "Word.Application")
- If Err Then
- Err.Clear
- Set oWord = CreateObject("Word.Application")
- If Err Then
- MsgBox "沒有安裝 Office Word !", vbQuestion, WScript.ScriptName
- Exit Sub
- End If
- End If
- Set oDoc = GetObject(strDoc)
- If Err Then
- MsgBox """" & strDoc & """ 不存在,或者不是 Office Word 文件!", vbQuestion, WScript.ScriptName
- oDoc.Close False
- oWord.Quit
- Exit Sub
- End If
- On Error GoTo 0
- oDoc.Activate
- Set oWord = oDoc.Application
- oWord.Application.DisplayAlerts = False
- oWord.Visible = True
-
- '******************************
- '獲取用戶輸入頁數,格式化(2, 6-10 => 2,6,7,8,9,10)
- '******************************
- nPages = oDoc.Application.Selection.Information(wdNumberOfPagesInDocument)
- sPages = InputBox("請輸入要列印的頁碼和頁面範圍,以逗號隔開。例如,""2, 6-10"" 會就列印第 2 頁及第 6 至第 10 頁。","請輸入要列印的頁碼範圍:","1-" & nPages)
- For Each vT In Split(sPages, ",")
- If InStr(CStr(vT), "-") <= 0 Then
- If sPages2 <> "" Then sPages2 = sPages2 & ","
- sPages2 = sPages2 & CStr(vT)
- Else
- For nT = Split(CStr(vT),"-")(0) To Split(CStr(vT),"-")(1)
- If sPages2 <> "" Then sPages2 = sPages2 & ","
- sPages2 = sPages2 & CStr(nT)
- Next
- End If
- Next
-
- '******************************
- '打印頁面(每次列印1頁後延時列印下一頁)
- '******************************
- For nT = 0 To UBound(Split(sPages2, ","))
- oDoc.Application.PrintOut True, True, wdPrintRangeOfPages, "", "", "", wdPrintDocumentContent, 1, CStr(Split(sPages2, ",")(nT)), 0
- If nT < UBound(Split(sPages2, ",")) Then WScript.Sleep lngSecond * 1000
- Next
-
- '******************************
- '關閉 Word
- '******************************
- oDoc.Close False
- oWord.Quit
- MsgBox "列印完成 !", vbQuestion, WScript.ScriptName
-
- 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
???
你自己試就知道了。何來此問?
你肯定沒試過一次。很好,我都試過幾次了。
作者: 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 |