本帖最后由 senhuan 于 2012-11-23 13:21 编辑
刚看完《Excel VBA其实很简单》,有些兴奋所以找些工作中提起的需求尝试用VBA解决练练手来,所以有了以下的结果…… 声明:VBA初学入门,需要的是意见或鼓励,欢迎讨论但请不喜勿喷{:soso_e149:}
需求描述: 需打印的文件太多,有的需要A3,有的是A4,有的存档要B5,所以要在多台打印机间频繁切换,不能更改系统默认打印机,只能分别依次打开每个文件后在打印设置页面选择打印机列表更改要使用的机器名称,问题是:如何一键自动设置?
原理解析: 在Excel VBE立即窗口输入“?Application.ActivePrinter”,将返回当前系统默认使用的打印机名称,返回值类似“Brother HL-5340D series 在 Ne02:”
要使用VBA更改当前使用打印机,可以使用代码Application.ActivePrinter="Brother HL-5340D series 在 Ne02:"来设置。我们知道“BrotherHL-5340D series”是打印机名称(可从“开始——设置——打印机和传真”那里看到),那上面提到的如“Ne02:”又从何得来??
要自动设置当前打印机,前提有两个: 一、自动查找本机可用打印机列表; 二、自动查找各打印机使用的端口。
经搜索,从以下任一注册表项均可读取本机完整打印机名称列表(包括端口): HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Devices HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\PrinterPorts HKEY_USERS\.DEFAULT\Software\Microsoft\WindowsNT\CurrentVersion\Devices HKEY_USERS\.DEFAULT\Software\Microsoft\WindowsNT\CurrentVersion\PrinterPorts HKEY_USERS\S-1-5-18\Software\Microsoft\WindowsNT\CurrentVersion\Devices HKEY_USERS\S-1-5-18\Software\Microsoft\WindowsNT\CurrentVersion\PrinterPorts HKEY_USERS\S-1-5-19\Software\Microsoft\WindowsNT\CurrentVersion\Devices HKEY_USERS\S-1-5-19\Software\Microsoft\WindowsNT\CurrentVersion\PrinterPorts HKEY_USERS\S-1-5-20\Software\Microsoft\WindowsNT\CurrentVersion\Devices HKEY_USERS\S-1-5-20\Software\Microsoft\WindowsNT\CurrentVersion\PrinterPorts
显示效果如下:
或者
因文章较长,详细图文解析、代码及运行效果演示见附件: |