代码之家  ›  专栏  ›  技术社区  ›  Tuberose

ActivePrinter不适用于嵌入式文档

  •  0
  • Tuberose  · 技术社区  · 6 年前

    我的默认打印机位于 Control Panel> Printer and Faxes HP LaserJet P2035 on Ne02:

    我有 连接到我的系统的活动打印机。

    我想要 PrintOut 我的第二台打印机是: HP LaserJet Pro MFP M127-M128 PCLmS on Ne01:

    有一个 嵌入的MS Word文档 ( 作为一个图标 )在中 Sheet1

    打印输出 上述嵌入文档。

    我的代码是:

    Sub PrintJob()
    
        Dim ObjWord As Word.Application
        Dim objDoc As Word.Document
    
        'Initialization
        ActiveSheet.OLEObjects("WDoc").Activate
        Set ObjWord = GetObject(, "Word.Application")
        ObjWord.Visible = False
        Set objDoc = ObjWord.activedocument
        Application.ActivePrinter = "HP LaserJet Pro MFP M127-M128 PCLmS on Ne01:"
    
        objDoc.PrintOut
    
    End Sub
    

    不幸的是 打印输出 已完成 Ne02上的HP LaserJet P2035: 打印机

    所以 打印输出 不接受 ActivePrinter 论点

    关键是 打印输出 随着变化 活动打印机 在中使用时是否正确操作 Worksheet 打印(如下所示)

    Application.ActivePrinter="HP LaserJet Pro MFP M127-M128 PCLmS on Ne01:"
    ThisWorkbook.ActiveSheet.Printout
    

    但问题是要改变 活动打印机 objDoc.PrintOut (上面的第一个代码),是 活动打印机 无效,并且 打印输出 我的 系统默认打印机 .

    1 回复  |  直到 6 年前
        1
  •  0
  •   Tuberose    6 年前

    在这种情况下( 设置用于打印嵌入文档的特定打印机 ),重点是我们应该为嵌入对象设置打印机 Application 对象

    子打印作业()

        Dim ObjWord As Word.Application
        Dim objDoc As Word.Document
    
        'Initialization
        ActiveSheet.OLEObjects("WDoc").Activate
        Set ObjWord = GetObject(, "Word.Application")
        ObjWord.Visible = False
        Set objDoc = ObjWord.activedocument
    
        'Here we set the ActivePrinter for the objWord's Application object:
        objWord.Application.ActivePrinter = "HP LaserJet Pro MFP M127-M128 PCLmS on Ne01:"
    
        objDoc.PrintOut
    
    End Sub