ActivePrinter不适用于嵌入式文档

问题描述 投票:0回答:1

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

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

我希望PrintOut和我的第二台打印机:HP LaserJet Pro MFP M127-M128 PCLmS on Ne01:

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

我在PrintOut上面嵌入了文档。

我的代码是:

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

不幸的是PrintOut完成了HP LaserJet P2035 on Ne02:打印机。

所以PrintOut不接受ActivePrinter论证。

关键是PrintOutActivePrinter的变化在Worksheet打印时使用正确。 (如下)

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

但问题是改变ActivePrinterobjDoc.PrintOut(首先是代码),ActivePrinter是无效的,PrintOut用我的系统默认打印机。

excel vba excel-vba printing
1个回答
0
投票

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

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

    '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
© www.soinside.com 2019 - 2024. All rights reserved.