如何使用 Excel VBA 更改系统默认打印机?

Posted

技术标签:

【中文标题】如何使用 Excel VBA 更改系统默认打印机?【英文标题】:how to change the system default printer using Excel VBA? 【发布时间】:2017-06-07 06:45:50 【问题描述】:

有什么方法可以使用 VBA 更改系统默认打印机?以及更改其设置?还是向VBA问太多了T-T

【问题讨论】:

是的,你可以。你知道打印机名称吗?你试过任何代码吗? 非常感谢。我想我已经找到了方法:D 【参考方案1】:

是的,这是可能的。你需要从你的 VBA 代码中执行一个 shell 脚本:

Sub ChangePrinter()
    Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""HP LaserJet 3000"""
End Sub

(将HP LaserJet 3000 更改为您的打印机名称)。

如果您的打印机位于网络位置(例如HP LaserJet 3000 on 192.168.1.100),请使用以下语法:

Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""\\192.168.1.100\HP LaserJet 3000"""

也可以更改打印机设置,但您需要一个带有必要设置的.dat 文件。

从打印机获取当前设置:

Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /Ss /n ""HP LaserJet 3000"" /a ""C:\your_settings.dat"" u"

要将设置文件输入打印机驱动程序:

Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n ""HP LaserJet 3000"" /a ""C:\your_settings.dat"" u"

【讨论】:

非常感谢!我已经测试了代码,它对我很有用。但是因为我想通过从 excel 中的列表中选择来选择默认打印机而不打开代码并每次都对其进行更改,所以我将打印机的名称存储到一个变量中并尝试用“HP LaserJet 3000”替换它,但是它无法工作,com 要求我检查打印机的名称...有什么办法可以让这正确吗? 如何将它添加到字符串中?您应该像这样连接字符串:............" & PrinterNameVariable & "............ 我使用了以下行: 子打印机设置() 如果您的打印机名称包含空格,您需要用引号将其括起来:Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n """ & Printer & """... 注意双引号。

以上是关于如何使用 Excel VBA 更改系统默认打印机?的主要内容,如果未能解决你的问题,请参考以下文章

MS ACCESS:通过 VBA 更改默认打印机

问:如何以横向格式打印 EXCEL / VBA 用户表单? [关闭]

如何使用VBA更改Excel图表中的数据标签宽度?

如何在Excel表格中将系统导出的部门的代码,用公式或者vba转换成文字?

如何更改通过 Excel VBA 代码通过 Outlook 发送的电子邮件的字体格式?

使用Excel VBA,如何将某一个工作表保存到新建的Excel中?