Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 252
Default How to check a printer's availability

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


--
thank you so much for your help
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 131
Default How to check a printer's availability

"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
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 252
Default 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

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 131
Default How to check a printer's availability

"clara" wrote:

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?


WMI stands for Windows Management Instrumentation. It is used mostly for
system administration (getting system information, monitoring etc). It is a
set of classes (like Win32_Printer) that represent just about any computer
component you can think of. It can be very useful.

Hope this helps. I'm sure you can google a much better answer.

--
urkec
  #5   Report Post  
Posted to microsoft.public.excel.programming
tom tom is offline
external usenet poster
 
Posts: 570
Default How to check a printer's availability

I think that this would be useful to me, but every time I run it, I get a
status return of 3, even when the printer is turned off.

Is there something I need in addition to this script?

Thanks for the 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

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
VBA Availability? Paul Fenton[_2_] Excel Programming 3 April 3rd 06 02:47 PM
Check online network availability [email protected] Excel Programming 2 March 2nd 05 06:03 PM
Check image availability on userform gki Excel Programming 3 July 22nd 04 05:53 PM
How to check for availability activeX control Emile van Mierlo Excel Programming 2 May 5th 04 02:32 PM
Availability of UDF Paul Lautman Excel Programming 3 March 1st 04 07:21 PM


All times are GMT +1. The time now is 12:38 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"