ActivePrinter不适用于嵌入式文档

时间:2017-12-27 11:30:15

标签: excel vba excel-vba printing

df = df.sort_index(axis=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参数。

关键是ActivePrinterPrintOut打印中使用时,ActivePrinter更改正确。 (如下)

Worksheet

但问题是要更改Application.ActivePrinter="HP LaserJet Pro MFP M127-M128 PCLmS on Ne01:" ThisWorkbook.ActiveSheet.Printout ActivePrinter(首先是代码),objDoc.PrintOut无效,ActivePrinter使用我的系统默认打印机

1 个答案:

答案 0 :(得分: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