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: 22
Registrado em: Dom Set 11, 2016 5:04 pm

Verificar se impressora padrão está desligada

Mensagem por TARSA » Qua Mai 24, 2017 4:00 pm

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: 2380
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Verificar se impressora padrão está desligada

Mensagem por webmaster » Qui Mai 25, 2017 5:48 pm

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


Tomás
http://www.tomasvasquez.com.br/blog
http://twitter.com/tomamais
Gostou da resposta? Clique no joinha no topo da mensagem!
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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

Re: Verificar se impressora padrão está desligada

Mensagem por TARSA » Ter Mai 30, 2017 4:08 pm

Muito obrigado,

Vou tentar adaptar.



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

Re: Verificar se impressora padrão está desligada

Mensagem por TARSA » Ter Mai 30, 2017 8:21 pm

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: 2380
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Verificar se impressora padrão está desligada

Mensagem por webmaster » Qua Mai 31, 2017 11:16 am

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


Tomás
http://www.tomasvasquez.com.br/blog
http://twitter.com/tomamais
Gostou da resposta? Clique no joinha no topo da mensagem!
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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

Re: Verificar se impressora padrão está desligada

Mensagem por TARSA » Qua Mai 31, 2017 3:23 pm

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: 22
Registrado em: Dom Set 11, 2016 5:04 pm

Re: Verificar se impressora padrão está desligada

Mensagem por TARSA » Qua Mai 31, 2017 3:47 pm

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: 2380
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Verificar se impressora padrão está desligada

Mensagem por webmaster » Qua Mai 31, 2017 5:11 pm

Lindo! Voce permite que eu publique isso no blog?


Tomás
http://www.tomasvasquez.com.br/blog
http://twitter.com/tomamais
Gostou da resposta? Clique no joinha no topo da mensagem!
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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

Re: Verificar se impressora padrão está desligada

Mensagem por TARSA » Qua Mai 31, 2017 6:46 pm

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: 36
Registrado em: Qua Mar 20, 2013 6:31 pm

Re: Verificar se impressora padrão está desligada

Mensagem por Basole » Qua Mai 31, 2017 8:17 pm

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