ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 用VBA更改Excel的默认打印机

用VBA更改Excel的默认打印机

作者:绿色风 分类: 时间:2022-08-18 浏览:261
楼主
zlxtl
VBA可以获取打印机名,但不能更改打印机名
所幸WMI和注册表功能搭配后可以实现此功能。
代码如下:
  1. Sub 更改打印机()
  2.     Dim 打印机组() As String, 端口() As String, Str As String, i As Byte, j As Byte, 打印机
  3.     For Each Item In GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer")
  4.         i = i + 1
  5.         ReDim Preserve 打印机组(1 To i)
  6.         ReDim Preserve 端口(1 To i)
  7.         打印机组(i) = Item.Name
  8.     Next
  9.     For j = 1 To i
  10.         端口(j) = Right(CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices\" & 打印机组(j)), 5)
  11.     Next j
  12.     If 打印机组(1) = "" Then GoTo err
  13.     For j = 1 To i
  14.         Str = Str & j & "." & 打印机组(j) + Chr(10)
  15.     Next j
  16.     打印机 = Application.InputBox("请指定编号,编号对应的打印机将成为默认打印机。" & vbCrLf & Str, "确认编号", 1, , , , , 1)
  17.     If 打印机 < 1 Or 打印机 > i Then MsgBox "录入错误": GoTo err
  18.     ActivePrinter = 打印机组(打印机) & " 在 " & 端口(打印机)
  19.     MsgBox Application.ActivePrinter, 65, "默认打印机"
  20. err:
  21. End
  22. End Sub
2楼
amulee
学习了。但是有网络打印机的时候会出错。
3楼
水吉果果
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap