作者:绿色风
分类:
时间:2022-08-18
浏览:261
楼主 zlxtl |
VBA可以获取打印机名,但不能更改打印机名 所幸WMI和注册表功能搭配后可以实现此功能。 代码如下:
- Sub 更改打印机()
- Dim 打印机组() As String, 端口() As String, Str As String, i As Byte, j As Byte, 打印机
- For Each Item In GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer")
- i = i + 1
- ReDim Preserve 打印机组(1 To i)
- ReDim Preserve 端口(1 To i)
- 打印机组(i) = Item.Name
- Next
- For j = 1 To i
- 端口(j) = Right(CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices\" & 打印机组(j)), 5)
- Next j
- If 打印机组(1) = "" Then GoTo err
- For j = 1 To i
- Str = Str & j & "." & 打印机组(j) + Chr(10)
- Next j
- 打印机 = Application.InputBox("请指定编号,编号对应的打印机将成为默认打印机。" & vbCrLf & Str, "确认编号", 1, , , , , 1)
- If 打印机 < 1 Or 打印机 > i Then MsgBox "录入错误": GoTo err
- ActivePrinter = 打印机组(打印机) & " 在 " & 端口(打印机)
- MsgBox Application.ActivePrinter, 65, "默认打印机"
- err:
- End
- End Sub
|
2楼 amulee |
学习了。但是有网络打印机的时候会出错。 |
3楼 水吉果果 |
学习 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一