我正在尝试创建一个批处理文件(使用VB脚本)以打印doc文件,但我面临的问题是,打印机是我们办公室的共享打印机,当我运行以下代码时,它说“由于当前打印机设置有问题,Windows无法打印”。这是我的代码
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("C:\Users\Iqbaltaj\Downloads\Test.docx")
objDoc.PrintOut()
objWord.Visible = False
objWord.ScreenUpdating = False
objWord.ActiveDocument.PrintOut False
objWord.ActiveDocument.Close 0
objWord.Quit
Set objWord = Nothing
我的共享打印机的位置是“\\ cap003 \ HP LaserJet P3005 PCL6”。 请告诉我应该添加哪些代码行,以便打印文档。 谢谢。
答案 0 :(得分:0)
尝试objWord.PrintOut()
代替objDoc.PrintOut()
您也可以添加打印机设置,试试这个:
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("C:\Users\Iqbaltaj\Downloads\Test.docx")
objWord.WordBasic.FilePrintSetup(Printer:="HP LaserJet P3005 PCL6", DoNotSetAsSysDefault:=1)
objWord.PrintOut()
...
objWord.Documents.Close()
objWord.Quit()
这是假设“HP LaserJet P3005 PCL6”是该打印机的名称(当然)。
您可以通过PrinterSettings.InstalledPrinters检查安装的打印机。
答案 1 :(得分:0)
如果我发现这个example code是正确的,那么语法就是......
objWord.WordBasic.FilePrintSetup "HP LaserJet P3005 PCL6", , , 1
好吧,如果没有任何帮助,这里有更多可以尝试......
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
strPrinterName = "HP LaserJet P3005 PCL6"
strPrinterPath = "\\cap003\" & strPrinterName
bIsMapped = False
For i = 0 to oPrinters.Count - 1 Step 2
If strPrinterName = oPrinters.Item(i+1) Then
bIsMapped = True
Exit For
End If
Next
WScript.Echo "Mapped: " & bIsMapped
If Not bIsMapped Then
WshNetwork.AddWindowsPrinterConnection strPrinterPath
End If