Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Excel VBA更改系统默认打印机?_Excel_Vba - Fatal编程技术网

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

如何使用Excel VBA更改系统默认打印机?,excel,vba,Excel,Vba,是否有任何方法可以使用VBA更改系统默认打印机?以及更改其设置?还是VBA T-T的要求太高了?是的,这是可能的。您需要从VBA代码执行shell脚本: Sub ChangePrinter() Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""HP LaserJet 3000""" End Sub (将HP LaserJet 3000更改为您的打印机名称) 如果打印机位于网络位置(例如192.168.1.100上的HP LaserJet

是否有任何方法可以使用VBA更改系统默认打印机?以及更改其设置?还是VBA T-T的要求太高了?是的,这是可能的。您需要从VBA代码执行shell脚本:

Sub ChangePrinter()
    Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""HP LaserJet 3000"""
End Sub
(将HP LaserJet 3000更改为您的打印机名称)

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

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"

是的,有可能。您需要从VBA代码执行shell脚本:

Sub ChangePrinter()
    Shell "RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n ""HP LaserJet 3000"""
End Sub
(将HP LaserJet 3000更改为您的打印机名称)

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

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要求我检查打印机名称。。。有没有什么方法可以让它正确?如何将它添加到字符串中?您应该像这样连接字符串:
………”&printernamevaluate&“…”
我使用了以下行:Sub PrinterSetup(),如果打印机名称包含空格,则需要将其括在引号中:
Shell“RUNDLL32 PRINTUI.DLL,printuitery/y/n”&printer&““…
请注意双引号。非常感谢!我已经测试了代码,它对我来说非常有效。但由于我想通过从excel中的列表中选择默认打印机,而无需每次打开代码并对其进行更改,因此我将打印机名称存储到一个变量中,并尝试将其替换为“HP LaserJet 3000”,但它无法工作,com要求我检查打印机名称。。。有没有什么方法可以让它正确?如何将它添加到字符串中?您应该像这样连接字符串:
………”&printernamevaluate&“…”
我使用了以下行:Sub-PrinterSetup(),如果打印机名称包含空格,则需要将其括在引号中:
Shell“RUNDLL32 PRINTUI.DLL,printuitery/y/n”“&printer&”“。
请注意双引号。