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