Página 1 de 2

Verificar se impressora padrão está desligada

Enviado: Qua Mai 24, 2017 4:00 pm
por TARSA
Olá pessoal,

Criei um userform que precisa avisar quando a impressora padrão está desligada e quando isso acontecer
coloquei uma label com o seguinte caption "Impressora desligada, verifique".

Alguém sabe como fazer?

Para tanto usei o seguinte código ao iniciar o formulário:

Private Sub UserForm_Initialize()


If Application.PrintCommunication = False Then

Me.Label3.Visible = True
Exit Sub
Else

Me.Label3.Visible = False

End If

End Sub

Re: Verificar se impressora padrão está desligada

Enviado: Qui Mai 25, 2017 5:48 pm
por webmaster
Não é algo muito trivial, mas isto pode dar uma ideia de como resolver o problema:

http://www.merrioncomputing.com/Program ... Status.htm
http://www.tomasvasquez.com.br/blog/mic ... computador

Re: Verificar se impressora padrão está desligada

Enviado: Ter Mai 30, 2017 4:08 pm
por TARSA
Muito obrigado,

Vou tentar adaptar.

Re: Verificar se impressora padrão está desligada

Enviado: Ter Mai 30, 2017 8:21 pm
por TARSA
Pessoal,

Resolvi esse problema adaptando uma função que achei na internet.

Function PROCURAENDERECO(ByVal Area As Range, ByVal Valor_Procurado As String)

If Not Area.Find(Valor_Procurado) Is Nothing Then
PROCURAENDERECO = Area.Find(Valor_Procurado).Address
Else
PROCURAENDERECO = CVErr(xlErrNA)
End If

End Function

** Depois de colocada em um módulo pode ser chamada na planilha e se a impressora estiver
DESLIGADA o resultado será (Verdadeiro ou True).

Espero que ajude alguém.

Re: Verificar se impressora padrão está desligada

Enviado: Qua Mai 31, 2017 11:16 am
por webmaster
Valeu a indicacao do codigo! Tem o link da fonte para dar uma olhada?

Re: Verificar se impressora padrão está desligada

Enviado: Qua Mai 31, 2017 3:23 pm
por TARSA
Thomaz,

Se não me engano foi em um desses dois links que guardei no meu histórico que parti para a adaptação.

http://www.vbforums.com/showthread.php? ... -on-or-off

https://leegreffin.wordpress.com/2011/0 ... vba-macro/

Re: Verificar se impressora padrão está desligada

Enviado: Qua Mai 31, 2017 3:47 pm
por TARSA
Pessoal peço mil desculpas, a função de verificar se impressora está ON\OFF é a seguinte:

Public Function PrinterOffline(Optional pstrPrinter As String = "Default") As Boolean
Dim strWhere As String
Dim objWMI As Object
Dim objPrinters As Object
Dim objPrinter As Object

Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
If LCase$(pstrPrinter) = "default" Then
strWhere = "Default = True"
Else
strWhere = "Name = '" & pstrPrinter & "'"
End If
Set objPrinters = objWMI.ExecQuery("SELECT * FROM Win32_Printer WHERE " & strWhere)
For Each objPrinter In objPrinters
PrinterOffline = objPrinter.WorkOffline
Exit For
Next
Set objPrinter = Nothing
Set objPrinters = Nothing
Set objWMI = Nothing
End Function

Re: Verificar se impressora padrão está desligada

Enviado: Qua Mai 31, 2017 5:11 pm
por webmaster
Lindo! Voce permite que eu publique isso no blog?

Re: Verificar se impressora padrão está desligada

Enviado: Qua Mai 31, 2017 6:46 pm
por TARSA
Claro que sim, com maior prazer.
Lembrando que adaptei o código que enviei primeiro por engano, esse só implantei.

Abraços.

Re: Verificar se impressora padrão está desligada

Enviado: Qua Mai 31, 2017 8:17 pm
por Basole
Pra mim este codigo nao funcionou.
O que tenho usado é este:

Código: Selecionar todos

Sub Check_Printer_Status()
    Dim strComputer As String
    Dim objWMIService
    Dim colInstalledPrinters
    Dim objPrinter
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
                                  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colInstalledPrinters = objWMIService.ExecQuery _
                               ("Select * from Win32_Printer where Default = 'True'")
                               
    For Each objPrinter In colInstalledPrinters
        Select Case objPrinter.printerstatus
        Case 3
            MsgBox "A impressora está ociosa"
        Case 4
            MsgBox "Impressora esta imprimindo"
        Case 5
            MsgBox "A impressora está aquecendo"
        Case Else
            MsgBox "A impressora está desativada"
        End Select
    Next
End Sub