我目前正在使用vba宏来填写pdf表单并将其打印到另一个pdf。如果“Microsoft Print to PDF”是默认打印机,则可以正常工作,但我确实需要不时地更改此设置,并忘记将其更改回来。我目前在另一个宏上使用下面的代码将默认打印机更改为办公室中的实际纸张打印机;但是,当我将此代码与Microsoft Print to PDF打印机一起使用时,它会运行,但不会更改默认打印机。
CreateObject("WScript.Network").SetDefaultPrinter "Microsoft Print to PDF"发布于 2020-07-23 00:42:51
您可以在excel vba中设置活动打印机,如下所示:
Application.ActivePrinter =“Ne04上的HL-L2350DW兄弟系列:”
您可以通过设备和打印机确定打印机名称。然而,on Ne04:有点神秘。它应该是端口,但如果您查看打印机属性和/或注册表,则无法找到此值。
我发现确定此值的唯一方法是将打印机设置为默认值,然后在Excel中输入Excel,并在VBA即时窗口中输入?ActivePrinter。
?ActivePrinter
Foxit Reader PDF Printer on Ne02:一旦获得了所需的信息,就可以很容易地更改代码,如下所示:
DefaultPtr =Application.ActivePrinter
Application.ActivePrinter = "Foxit Reader PDF Printer on Ne02:"
'***Do your printing here***
Application.ActivePrinter = DefalutPtr发布于 2020-07-25 23:06:18
这是@FaneDuru解决方案的一个插件,它实现了一个对话框,显示打印机列表,突出显示当前活动的打印机,并允许您选择任何其他打印机。它还包含对"Send to OneNote 2016“打印机问题的修复。代码用于运行如下所示的对话框:

要运行该对话框,只需在VBA代码中添加: ufSelectPrinter.Show即可。注意:您必须使用代码中显示的标签来创建对话框。
Option Explicit
Dim Printers() As String
Private Sub UserForm_Initialize()
Dim iSelPtr As Integer
Dim lCntr As Long
Dim zCurPtr As String
zCurPtr = Application.ActivePrinter
Printers = GetPrinterFullNames()
For lCntr = LBound(Printers) To UBound(Printers)
'*** Fix for: "Send to OneNote 2016" printer that
'*** that prints to nul: port which is dropped
'*** by GetPrinterFullNames() routine.
If InStr(Printers(lCntr), ":") = 0 Then
Printers(lCntr) = Printers(lCntr) & "nul:"
End If
'*** END of Fix ***
'*** Find current printer in the list and adjust the
'*** index for the zero based listbox.
If Printers(lCntr) = zCurPtr Then iSelPtr = lCntr - 1
Next lCntr
'*** Populate the List Box ***
Me.lboxSelectPrinter.List = Printers()
'*** Highlight the current Active Printer ***
Me.lboxSelectPrinter.Selected(iSelPtr) = True
End Sub
Private Sub CBCancel_Click()
Unload Me
End Sub
Private Sub CBOk_Click()
Dim iSelected As Integer
iSelected = Me.lboxSelectPrinter.ListIndex + 1 '***Zero Based***
' Debug.Print Printers(iSelected)
Application.ActivePrinter = Printers(iSelected)
Unload Me
End SubHTH
https://stackoverflow.com/questions/63037229
复制相似问题