首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将默认打印机设置为Microsoft Print to PDF

将默认打印机设置为Microsoft Print to PDF
EN

Stack Overflow用户
提问于 2020-07-22 22:57:18
回答 2查看 4.2K关注 0票数 2

我目前正在使用vba宏来填写pdf表单并将其打印到另一个pdf。如果“Microsoft Print to PDF”是默认打印机,则可以正常工作,但我确实需要不时地更改此设置,并忘记将其更改回来。我目前在另一个宏上使用下面的代码将默认打印机更改为办公室中的实际纸张打印机;但是,当我将此代码与Microsoft Print to PDF打印机一起使用时,它会运行,但不会更改默认打印机。

代码语言:javascript
复制
CreateObject("WScript.Network").SetDefaultPrinter "Microsoft Print to PDF"
EN

回答 2

Stack Overflow用户

发布于 2020-07-23 00:42:51

您可以在excel vba中设置活动打印机,如下所示:

Application.ActivePrinter =“Ne04上的HL-L2350DW兄弟系列:”

您可以通过设备和打印机确定打印机名称。然而,on Ne04:有点神秘。它应该是端口,但如果您查看打印机属性和/或注册表,则无法找到此值。

我发现确定此值的唯一方法是将打印机设置为默认值,然后在Excel中输入Excel,并在VBA即时窗口中输入?ActivePrinter。

代码语言:javascript
复制
?ActivePrinter
Foxit Reader PDF Printer on Ne02:

一旦获得了所需的信息,就可以很容易地更改代码,如下所示:

代码语言:javascript
复制
DefaultPtr =Application.ActivePrinter
Application.ActivePrinter = "Foxit Reader PDF Printer on Ne02:"
'***Do your printing here***
Application.ActivePrinter = DefalutPtr
票数 1
EN

Stack Overflow用户

发布于 2020-07-25 23:06:18

这是@FaneDuru解决方案的一个插件,它实现了一个对话框,显示打印机列表,突出显示当前活动的打印机,并允许您选择任何其他打印机。它还包含对"Send to OneNote 2016“打印机问题的修复。代码用于运行如下所示的对话框:

要运行该对话框,只需在VBA代码中添加: ufSelectPrinter.Show即可。注意:您必须使用代码中显示的标签来创建对话框。

代码语言:javascript
复制
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 Sub

HTH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63037229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档