Printer check

Status
Niet open voor verdere reacties.
Zo werkt het bij mij.

Code:
Private Sub CommandButton1_Click()
    If PrinterReady(Application.ActivePrinter) Then
        Sheets.PrintPreview
   Else
        MsgBox "De printer is niet gereed"
    End If
End Sub
Function PrinterReady(PRT As String) As Boolean
    Dim strComputer As String
    Dim objWMIService
    Dim colInstalledPrinters
    Dim objPrinter
    Dim printer
    strComputer = "."
    
    printer = PRT
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer", , 48)
    For Each objPrinter In colInstalledPrinters
        If Split(objPrinter.Path_, "=")(1) = """" & Replace(printer, " op Ne03:", "") & """" And Not objPrinter.WorkOffline Then
            PrinterReady = True
        End If
    Next
End Function
 
Ok dan. Zit inderdaad wat extra's bij :)
 
Maar ook deze werkt (helaas) niet :-(

Als hij uit of aan staat geeft ie: De Printer is niet gereed...

Moet dus worden bij aan, de Printer is WEL gereed en bij uit, de Printer is niet gereed..
 

Bijlagen

Laatst bewerkt:
En welke waarde heeft je Application.ActivePrinter?
 
Yeeaaa heb hem..

Dat was hem, die application.ActivePrinter aangepast in

Code:
If PrinterReady("Canon iP7200 series XPS") Then

Mag ik jullie beidde hartstikke bedanken, kan nu weer verder met mn programma :-)

Daar ook dit nog ff inlassen..

Thanks en fijne Kerstdagen toegewenst..

Dutch
 

Bijlagen

Laatst bewerkt:
Ne03: gewijzigd? ;)
 
Ne03: is het device waarop wordt gecontroleerd en dat is niet op iedere PC hetzelfde.
Bij mij is dat Ne01:
Vandaar dat ik dacht dat je dat in de functie van HSV had gewijzigd.
Daarvoor was ook m'n vraag wat de waarde is van je Application.ActivePrinter
 
Ok,

Nee heb alleen
Code:
   If PrinterReady("Canon iP7200 series XPS") Then

gewijzigd. Die waarde kan je zo opvragen neem ik aan?
 
Dat is niet de waarde van Application.ActivePrinter
Druk eens op Ctrl-G in de VBE, dat opent het Direct venster.
Tik daarin: ?Application.ActivePrinter

Dan zie je de waarde er van.
 
In het direct venster: ?Application.ActivePrinter
Inclusief dat vraag teken.

Direct.JPG
 
Laatst bewerkt:
Zo kan ook nog als de poorten verschillend zijn.

Code:
Private Sub CommandButton1_Click()
    If PrinterReady([COLOR=#0000ff]Application.ActivePrinter[/COLOR]) Then
        Sheets.PrintPreview
   Else
        MsgBox "De printer is niet gereed"
    End If
End Sub
Function PrinterReady(PRT As String) As Boolean
    Dim strComputer As String
    Dim objWMIService
    Dim colInstalledPrinters
    Dim objPrinter
    Dim printer
    strComputer = "."
    
    printer = PRT
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer", , 48)
    For Each objPrinter In colInstalledPrinters
        If Split(objPrinter.Path_, "=")(1) = [COLOR=#0000ff]"""" & Split(printer, " op")(0) & """"[/COLOR] And Not objPrinter.WorkOffline Then
            PrinterReady = True
        End If
    Next
End Function
 
Of " on" bij een Engelse versie.
 
Ook dat nog.

Ervan uitgaande dat er geen Belgen zijn met een Franse versie.
Code:
 If Split(objPrinter.Path_, "=")(1) = """" & Split(printer, [COLOR=#0000ff]IIf(Application.International(1) = 31, " op", " on")[/COLOR])(0) & """" And Not objPrinter.WorkOffline Then
            PrinterReady = True
        End If
 
Of voor de Excel User Interface:
Application.LanguageSettings.LanguageID(msoLanguageIDUI)

Dat geeft voor Nederland de waarde 1043
Voor België/Nederlands 2067
Voor België/Frans 2060

Voor Friesland 1122, maar dat wil je als Groninger niet weten! ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan