How to check a printer's availability
Hi Urkec,
It works well! Before I printign, now I can know the state of the printer.
Now, Could you tell me What is WMI and How can we take advantage of it?
Thank you again!
Clara
--
thank you so much for your help
"urkec" wrote:
"clara" wrote:
Hi all,
Two bad things happened during my worksheet printing:
the first time the notepad is not connected to network before I click the
print button, but after I connect the notepad, the worksheet could not be
printed out correctly.
the second time the printer is out of paper before I click the print button,
same thing happened as the first time.
So I would like to know how to check the availability of a printer before
printing?
Thank you very much.
Clara
I'm not sure this is exactly what you need, but you can get some information
about printer status using WMI. You need administrator privileges to run it:
Sub WMITest()
'get active printer
strPrinterName = Application.ActivePrinter
'connect to WMI on local computer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
'enumerate printers
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
'Printer status:
'1 Other
'2 Unknown
'3 Idle
'4 Printing
'5 Warmup
'6 Stopped printing
'7 Offline
'get active printer status
For Each objPrinter In colInstalledPrinters
If InStr(strPrinterName, objPrinter.Name) Then
Debug.Print objPrinter.Name
If objPrinter.PrinterStatus = 1 _
Or objPrinter.PrinterStatus = 2 Then
Debug.Print "Printer not responding"
Else
Debug.Print "Printer status OK"
End If
End If
Next
End Sub
Hope this helps.
--
urkec
|