ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to check the existing of a printer? (https://www.excelbanter.com/excel-programming/393813-how-check-existing-printer.html)

clara

How to check the existing of a printer?
 
Hi

How to check the existing of a printer?

Clara
--
thank you so much for your help

Anony

How to check the existing of a printer?
 
To check the existence of a printer and display the name of the existing
printer, copy this code into a normal VBA module and run it:


Private Declare Function GetProfileStringA Lib "kernel32" _
(ByVal lpApplName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As _
String, ByVal nSize As Long) As Long

Sub Printer()
Dim strLPT As String * 255
Dim Result As String
Dim Resultlength, Comma1, Comma2
Dim Printer As String, Driver As String, Port As String
Dim Msg As String

Call GetProfileStringA("Windows", "Device", "", strLPT, 254)

On Error Resume Next
Result = Application.Trim(strLPT)
Resultlength = Len(Result)
If Err < 0 Then
MsgBox "No printer detected.", vbInformation, "Printer"
Exit Sub
End If
On Error GoTo 0

Comma1 = InStr(1, Result, ",", 1)
Comma2 = InStr(Comma1 + 1, Result, ",", 1)

Printer = Left(Result, Comma1 - 1)
If Printer = "" Then
MsgBox "No printer detected.", vbInformation, "Printer"
Exit Sub
End If

Msg = "Printer: " & Printer & vbCrLf
MsgBox Msg, , "Existing Printer"

End Sub

clara

How to check the existing of a printer?
 
HI Anony,

Thank you for your code. It can detect a printer's profile. What I really
want to need as follow:

before printing, I want to check whether the printer is in normal work
mode, such as network cable is connected, there is paper ect.

Is it possible to do it?

Thank you very much

Clara
--
thank you so much for your help


"Anony" wrote:

To check the existence of a printer and display the name of the existing
printer, copy this code into a normal VBA module and run it:


Private Declare Function GetProfileStringA Lib "kernel32" _
(ByVal lpApplName As String, ByVal lpKeyName As String, _
ByVal lpDefault As String, ByVal lpReturnedString As _
String, ByVal nSize As Long) As Long

Sub Printer()
Dim strLPT As String * 255
Dim Result As String
Dim Resultlength, Comma1, Comma2
Dim Printer As String, Driver As String, Port As String
Dim Msg As String

Call GetProfileStringA("Windows", "Device", "", strLPT, 254)

On Error Resume Next
Result = Application.Trim(strLPT)
Resultlength = Len(Result)
If Err < 0 Then
MsgBox "No printer detected.", vbInformation, "Printer"
Exit Sub
End If
On Error GoTo 0

Comma1 = InStr(1, Result, ",", 1)
Comma2 = InStr(Comma1 + 1, Result, ",", 1)

Printer = Left(Result, Comma1 - 1)
If Printer = "" Then
MsgBox "No printer detected.", vbInformation, "Printer"
Exit Sub
End If

Msg = "Printer: " & Printer & vbCrLf
MsgBox Msg, , "Existing Printer"

End Sub



All times are GMT +1. The time now is 12:20 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com