ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3757|回复: 9

[求助] 用printout方法批量打印Word文档,如何修改打印机

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-11-23 13:19 | 显示全部楼层 |阅读模式
本帖最后由 rainpu 于 2017-11-23 13:25 编辑

http://club.excelhome.net/thread-1182483-1-1.html
上述帖子给出了excel VBA批量打印Word文档的代码,请问其中printout方法下如何指定打印机,我试了ActivePrinter:= 是无效的,似乎这个printout方法和常规的Sheets.PrintOut的参数好像不一样?

请各路高手指点,另外我还想指定单色打印,不知道该怎么解决。

Sub 批量打印WORD文档()
     Dim fileToOpen, GetOpenFilename, App, iFile
     fileToOpen = Application.GetOpenFilename(filefilter:="Word文档(*.do*),*.do*", FilterIndex:=4, Title:="请选择要处理的文档(可多选)", MultiSelect:=True)
     If Not IsArray(fileToOpen) Then
         MsgBox "你没有选择文件", vbOKOnly, "提示": Exit Sub
     Else
         Set App = CreateObject("Word.Application")
         For Each iFile In fileToOpen
             Set WrdDoc = App.Documents.Open(iFile)
             App.Documents(WrdDoc).PrintOut     '用ActivePrinter:=无效,很奇怪
             App.Documents(WrdDoc).Close False
             T = T + 1
         Next
     End If
     MsgBox "操作完成!!" & vbCrLf & "打印了 " & T & " 个文件。", vbOKOnly, "提示"
End Sub

TA的精华主题

TA的得分主题

发表于 2017-11-23 13:59 | 显示全部楼层
word 下只有mac系统下才有ActivePrinterMacGX参数windows下没有。你可以先设置好要用的默认打印机直接printout就可以了。

TA的精华主题

TA的得分主题

发表于 2017-11-23 14:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub test()
    ThisDocument.PrintOut , , , , , , , , , , , , "xxx"
End Sub

其中的xxx就是你的打印机名称

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-23 15:16 | 显示全部楼层
本帖最后由 rainpu 于 2017-11-23 15:19 编辑
huang1314wei 发表于 2017-11-23 14:27
Sub test()
    ThisDocument.PrintOut , , , , , , , , , , , , "xxx"
End Sub

你好,感谢解答,但我试了一下还是不行,程序依然调用了默认打印机打印文件,没有用我指定的打印机打印。我也尝试用?Application.ActivePrinter获取打印机名称+端口,但还是不行

TA的精华主题

TA的得分主题

发表于 2017-11-23 15:35 | 显示全部楼层
rainpu 发表于 2017-11-23 15:16
你好,感谢解答,但我试了一下还是不行,程序依然调用了默认打印机打印文件,没有用我指定的打印机打印。 ...

这个代码我这里测试是没有问题的,那个打印机名称有的时候不是你在设备管理器里面的看到的名称,而是你用代码测试出来的名称,可以用application.ActivePrinter获得默认打印机名称,你可以先把你要用来打印的打印机设置成默认,然后用application.ActivePrinter得到这个打印机名称,然后再把上面代码的xxx换成得到的名称即可,如果你打印机名称填写错误或者不存在这个打印机,就会调用默认打印机来打印文档

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-25 10:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
huang1314wei 发表于 2017-11-23 15:35
这个代码我这里测试是没有问题的,那个打印机名称有的时候不是你在设备管理器里面的看到的名称,而是你用 ...

感谢您的帮助,试了多次还是不行,看来用excel VBA打印word还是有点问题。算了不折腾了

TA的精华主题

TA的得分主题

发表于 2022-11-15 20:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-3-25 21:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
    DefaultPrt = Application.ActivePrinter '保存当前默认打印机
     ActivePrinter = "新打印机名称" '这一项会改变默认打印机为新打印机
ActivePrinter = DefaultPrt '还原默认打印机

打印机名称必须和“控制面板---设备和打印机”里面的一模一样。
我平时用黑白打印机,一直这样用这个方法切换到另一台彩色打印机,发送以后又还原默认打印机为黑白打印机。

TA的精华主题

TA的得分主题

发表于 2024-3-8 09:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在 vba中的 word app 里面修改就好
注意  word 的printout  跟 excel的printout  是两回事

' 创建一个Word应用程序对象


Set wordapp = CreateObject("Word.Application")


'保存原有打印机

mrdyj = wordapp.ActivePrinter

'修改新打印机 比如iR-ADV C3330
wordapp.ActivePrinter = "iR-ADV C3330"

'执行其他内容


' 打开文件  路径需要重新更新
Set objDoc = wordapp.Documents.Open(路径", ReadOnly:=True)





' 打印PDF文件
objDoc.PrintOut


'最后还原打印机


wordapp.ActivePrinter =mrdyj

TA的精华主题

TA的得分主题

发表于 2024-3-8 09:45 | 显示全部楼层
word 的 printout 跟excel 的 printout 是两回事
直接在 word app修改就好



' 创建一个Word应用程序对象


Set wordapp = CreateObject("Word.Application")

' 保留默认打印机

mrdyj = wordapp.ActivePrinter


' 新打印机名称要修改自己想要的
wordapp.ActivePrinter = "iR-ADV C3330"




' 打开文件  新路径要重新修改
Set objDoc = wordapp.Documents.Open("新路径", ReadOnly:=True)





' 打印文件
objDoc.PrintOut

objDoc.Close

     




' 退出Word应用程序

'还原打印机设置

wordapp.ActivePrinter = mrdyj



wordapp.Quit
   
   
   
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 20:25 , Processed in 0.043572 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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