Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 12388|回复: 10

求助,怎样在VBA中设定打印机

[复制链接]
发表于 2016-5-26 12:59 | 显示全部楼层 |阅读模式
  因为工作的需要,经常需要把附件 复件 景阳冈酒厂样品A4量多版.rar (45.3 KB, 下载次数: 19)
发表于 2016-5-26 17:09 | 显示全部楼层
Sheets(1).PrintOut  ActivePrinter:="HP LaserJet 1020"

HP LaserJet 1020 为打印机名称

评分

参与人数 1 +1 收起 理由
dcb6381211 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-27 09:01 | 显示全部楼层
zjdh 发表于 2016-5-26 17:09
Sheets(1).PrintOut  ActivePrinter:="HP LaserJet 1020"

HP LaserJet 1020 为打印机名称

大师,在VBA页面打开sheet1后,里面有以下代码:
Private Sub cmdShowfrm_Click()
frmAutoPrint.Show 0
End Sub
是把你写的这段代码加到其后面吗?
Private Sub cmdShowfrm_Click()
frmAutoPrint.Show 0
End Sub
Sheets(1).PrintOut  ActivePrinter:="HP LaserJet 1020"
还是加入到模块1中的上面位置,我不懂编程,请大师明示,谢谢!
回复

使用道具 举报

 楼主| 发表于 2016-5-27 09:03 | 显示全部楼层
zjdh 发表于 2016-5-26 17:09
Sheets(1).PrintOut  ActivePrinter:="HP LaserJet 1020"

HP LaserJet 1020 为打印机名称

另外还涉及到一个问题,如果有3台打印机,全部都是惠普1020的,又怎么在程序中进行区分呢?
回复

使用道具 举报

 楼主| 发表于 2016-5-28 10:37 | 显示全部楼层
请各位大师指点

回复

使用道具 举报

 楼主| 发表于 2016-5-28 10:43 | 显示全部楼层
请大师们帮忙解决,谢谢!
回复

使用道具 举报

发表于 2016-5-28 17:21 | 显示全部楼层
dcb6381211 发表于 2016-5-27 09:01
大师,在VBA页面打开sheet1后,里面有以下代码:
Private Sub cmdShowfrm_Click()
frmAutoPrint.Show 0 ...

首先sheet1中的代码跟打印没有任何关系,他只是负责加载frmAutoPrint这个窗体,而真正实现打印功能的是窗体中的代码:
  1. Private Sub autoPrinter()
  2. 'Static COUNTER As Long
  3. Dim msg As String

  4. On Error GoTo err '意外错误捕捉
  5.   
  6.   Worksheets(1).EnableCalculation = False '关闭公式计算功能
  7.     Application.DisplayAlerts = False
  8.    Worksheets(1).PrintOut Copies:=1, Collate:=True '打印当前页
  9.   MYPor.Value = COUNTER
  10.   labCOUNTER.Caption = COUNTER
  11.    labStat.Caption = "当前打印第 " & COUNTER & "张!"
  12.          
  13.    If chkSaveas.Value = 1 Then Call Macro1  '录的宏
  14.    If chkSaveas.Value = 1 Then ThisWorkbook.Save
  15.          
  16.          
  17.      Worksheets(1).EnableCalculation = True '开始公式计算功能

  18. COUNTER = COUNTER + 1 '计数器运行

  19. PrintTime (txtDelay.Text) ' 延迟执行下次动作

  20. If COUNTER <= txtPage.Text Then
  21. If cmdPause.Tag = "" Then
  22. Call autoPrinter
  23. End If
  24. Else

  25. msg = MsgBox("当前打印工作已执行完毕,是否继续向后打印" & txtPage.Text & "张?", _
  26. 36, "Auto Print")
  27.           If msg = vbYes Then
  28.             COUNTER = 1
  29.              labCOUNTER.Caption = 1
  30.               Call autoPrinter
  31.             Else
  32.              cmdReset_Click
  33.              End If
  34.                                  
  35.   End If
  36.   

  37. Exit Sub
  38. err:
  39. MsgBox err.Description, 16, "Error"
  40. End Sub
复制代码
这个代码中Worksheets(1).PrintOut Copies:=1, Collate:=True 才真正实现了打印。
对于你描述的需求,如果你不懂编程,那我建议你不要修改程序了,只要设置每台电脑的默认打印机就行了,这样最方便!如果打印的时候选的不是默认打印机,那可以先通过工作簿自带的打印功能先去选择相应的打印机,然后再去执行这个按钮打印,以上均为使用操作及设置实现。如果一定要通过代码来实现非默认打印机的选择,需要先知道这台打印机的系统名称,注意每台电脑哪怕对应的是同一台打印机,这个名称字符串也会有不一样,所以需要去测试每台电脑的打印机名称,然后再去进行代码设置,所以相比下,建议不要修改代码

评分

参与人数 1 +1 收起 理由
dcb6381211 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-31 12:32 | 显示全部楼层
老司机带带我 发表于 2016-5-28 17:21
首先sheet1中的代码跟打印没有任何关系,他只是负责加载frmAutoPrint这个窗体,而真正实现打印功能的是窗 ...

谢谢

回复

使用道具 举报

 楼主| 发表于 2016-5-31 12:43 | 显示全部楼层
老司机带带我 发表于 2016-5-28 17:21
首先sheet1中的代码跟打印没有任何关系,他只是负责加载frmAutoPrint这个窗体,而真正实现打印功能的是窗 ...

大师,如果我是一台电脑,对应几台打印机,并且是一样的打印机,同时运行和打印机相同数量的那个附件电子表格,怎么选择打印机呢?
回复

使用道具 举报

发表于 2016-5-31 13:14 | 显示全部楼层
dcb6381211 发表于 2016-5-31 12:43
大师,如果我是一台电脑,对应几台打印机,并且是一样的打印机,同时运行和打印机相同数量的那个附件电子 ...

一台电脑同时运行和打印机相同数量的那个附件电子表格是什么意思?同时打开N多个工作簿?还是没弄明白你的意思!

一台电脑对应多台打印机,虽然打印机的型号可能是一样的,但是其地址和编号其实是有区别的,如果要获得当前打印机的系统字符串可以通过以下代码获得:
  1. Sub DD()
  2.     Sheet1.Range("A1") = Application.ActivePrinter
  3. End Sub
复制代码
执行后Sheet1的A1单元格会显示当前选择的打印机对应的字符串,如果你有N台打印机,可以用工作表自己的打印功能选择N次打印机设置,然后每选一次执行一次代码,这样就得到了每个打印机对应的字符串代码
QQ截图20160531130220.jpg

例如我获得的一个代码是\\10.0.8.227\DASCOM DS-5400H 在 Ne05:
然后如果要用程序调用次打印机,可以使用下列代码:
  1. Application.ActivePrinter = "\\10.0.8.227\DASCOM DS-5400H 在 Ne05:"
复制代码
这个代码是放在之前那个打印代码里面的,只要放在打印动作前面就OK!以上操作你得有一定的VBA基础,如果一点VBA基础都没有,就不会融会贯通了!

评分

参与人数 1 +1 收起 理由
dcb6381211 + 1

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-16 19:34 , Processed in 0.327590 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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