Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Verificar se impressora padrão está desligada
Verificar se impressora padrão está desligada
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
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
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
http://www.merrioncomputing.com/Program ... Status.htm
http://www.tomasvasquez.com.br/blog/mic ... computador
Re: Verificar se impressora padrão está desligada
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.
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
Valeu a indicacao do codigo! Tem o link da fonte para dar uma olhada?
Re: Verificar se impressora padrão está desligada
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/
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
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
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
Claro que sim, com maior prazer.
Lembrando que adaptei o código que enviei primeiro por engano, esse só implantei.
Abraços.
Lembrando que adaptei o código que enviei primeiro por engano, esse só implantei.
Abraços.
Re: Verificar se impressora padrão está desligada
Pra mim este codigo nao funcionou.
O que tenho usado é este:
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