我在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
论证。
关键是PrintOut
与ActivePrinter
的变化在Worksheet
打印时使用正确。 (如下)
Application.ActivePrinter="HP LaserJet Pro MFP M127-M128 PCLmS on Ne01:"
ThisWorkbook.ActiveSheet.Printout
但问题是改变ActivePrinter
和objDoc.PrintOut
(首先是代码),ActivePrinter
是无效的,PrintOut
用我的系统默认打印机。
在这种情况下(设置用于打印嵌入文档的特定打印机),关键是我们应该为嵌入对象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