Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Verificar se impressora padrão está desligada

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Avatar do usuário
TARSA
Colaborador
Colaborador
Mensagens: 36
Registrado em: Dom Set 11, 2016 5:04 pm

Verificar se impressora padrão está desligada

Mensagem 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


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Verificar se impressora padrão está desligada

Mensagem 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


Avatar do usuário
TARSA
Colaborador
Colaborador
Mensagens: 36
Registrado em: Dom Set 11, 2016 5:04 pm

Re: Verificar se impressora padrão está desligada

Mensagem por TARSA »

Muito obrigado,

Vou tentar adaptar.


Avatar do usuário
TARSA
Colaborador
Colaborador
Mensagens: 36
Registrado em: Dom Set 11, 2016 5:04 pm

Re: Verificar se impressora padrão está desligada

Mensagem 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.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Verificar se impressora padrão está desligada

Mensagem por webmaster »

Valeu a indicacao do codigo! Tem o link da fonte para dar uma olhada?


Avatar do usuário
TARSA
Colaborador
Colaborador
Mensagens: 36
Registrado em: Dom Set 11, 2016 5:04 pm

Re: Verificar se impressora padrão está desligada

Mensagem 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/


Avatar do usuário
TARSA
Colaborador
Colaborador
Mensagens: 36
Registrado em: Dom Set 11, 2016 5:04 pm

Re: Verificar se impressora padrão está desligada

Mensagem 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


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Verificar se impressora padrão está desligada

Mensagem por webmaster »

Lindo! Voce permite que eu publique isso no blog?


Avatar do usuário
TARSA
Colaborador
Colaborador
Mensagens: 36
Registrado em: Dom Set 11, 2016 5:04 pm

Re: Verificar se impressora padrão está desligada

Mensagem por TARSA »

Claro que sim, com maior prazer.
Lembrando que adaptei o código que enviei primeiro por engano, esse só implantei.

Abraços.


Basole
Colaborador
Colaborador
Mensagens: 67
Registrado em: Qua Mar 20, 2013 6:31 pm

Re: Verificar se impressora padrão está desligada

Mensagem 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 


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder