SELECIONAR IMPRESSORA
como faço para selecionar uma impressora via código, sem a necessidade de selecionar manualmente e também sem torná-la padrão, sendo selecionada apenas neste momento.
Não consegui prosseguir com os exemplos mostrados aqui...
Grato,
Gardel
Não consegui prosseguir com os exemplos mostrados aqui...
Grato,
Gardel
faço assim
Dim resp
resp = MsgBox([Ô]A Impressora Padrão é [Ô] & PrinterSelected & Chr(10) & [Ô]Deseja Alterar ?[Ô], vbYesNoCancel + vbQuestion + vbDefaultButton3)
If resp = vbYes Then
SelectPrinter.Show vbModal
ElseIf resp = vbCancel Then
Exit Sub
End If
For Each XPrinter In Printers
If XPrinter.DeviceName = PrinterSelected Then
Printer.TrackDefault = False
Set Printer = XPrinter
Exit For
End If
Next
isso abaixo é um form que apresenta as inmpresora
SelectPrinter.Picture = Aguarde!Icons_Empire.ListImages(44).Picture
For Each XPrinter In Printers
Combo1.AddItem XPrinter.DeviceName
Next
Combo1.Text = Printer.DeviceName
ve se ajuda
Dim resp
resp = MsgBox([Ô]A Impressora Padrão é [Ô] & PrinterSelected & Chr(10) & [Ô]Deseja Alterar ?[Ô], vbYesNoCancel + vbQuestion + vbDefaultButton3)
If resp = vbYes Then
SelectPrinter.Show vbModal
ElseIf resp = vbCancel Then
Exit Sub
End If
For Each XPrinter In Printers
If XPrinter.DeviceName = PrinterSelected Then
Printer.TrackDefault = False
Set Printer = XPrinter
Exit For
End If
Next
isso abaixo é um form que apresenta as inmpresora
SelectPrinter.Picture = Aguarde!Icons_Empire.ListImages(44).Picture
For Each XPrinter In Printers
Combo1.AddItem XPrinter.DeviceName
Next
Combo1.Text = Printer.DeviceName
ve se ajuda
[ô]em um form
Private Sub Command1_Click()
Dim ImpInicial As String
ImpInicial = GetDefaultPrinter
cm1.ShowPrinter
printer.Print [Ô]teste[Ô]
printer.EndDoc
Call SetDefaultPrinter(ImpInicial)
Exit Sub
End Sub
[ô]No modulo
Public Function GetDefaultPrinter() As String
Dim strReturn As String
Dim prnDefault As printer
On Error GoTo ErrorHandler
strReturn = vbNullString
Set prnDefault = printer
strReturn = prnDefault.DeviceName
CleanExit:
If Not prnDefault Is Nothing Then
Set prnDefault = Nothing
End If
GetDefaultPrinter = strReturn
Exit Function
ErrorHandler:
MsgBox [Ô]Error No: [Ô] & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbCritical, [Ô]Erro![Ô]
Err.Clear
Resume CleanExit
End Function
Public Function SetDefaultPrinter(ByVal v_strPrinterPath As String) As Boolean
Dim blnReturn As Boolean
Dim objNetwork As Object
Dim i As Integer
On Error GoTo ErrorHandler
blnReturn = False
Set objNetwork = CreateObject([Ô]WScript.Network[Ô])
objNetwork.SetDefaultPrinter v_strPrinterPath
blnReturn = True
CleanExit:
If Not objNetwork Is Nothing Then
Set objNetwork = Nothing
End If
SetDefaultPrinter = blnReturn
Exit Function
ErrorHandler:
MsgBox [Ô]Error No: [Ô] & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbCritical, [Ô]Erro![Ô]
Err.Clear
Resume CleanExit
End Function
Private Sub Command1_Click()
Dim ImpInicial As String
ImpInicial = GetDefaultPrinter
cm1.ShowPrinter
printer.Print [Ô]teste[Ô]
printer.EndDoc
Call SetDefaultPrinter(ImpInicial)
Exit Sub
End Sub
[ô]No modulo
Public Function GetDefaultPrinter() As String
Dim strReturn As String
Dim prnDefault As printer
On Error GoTo ErrorHandler
strReturn = vbNullString
Set prnDefault = printer
strReturn = prnDefault.DeviceName
CleanExit:
If Not prnDefault Is Nothing Then
Set prnDefault = Nothing
End If
GetDefaultPrinter = strReturn
Exit Function
ErrorHandler:
MsgBox [Ô]Error No: [Ô] & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbCritical, [Ô]Erro![Ô]
Err.Clear
Resume CleanExit
End Function
Public Function SetDefaultPrinter(ByVal v_strPrinterPath As String) As Boolean
Dim blnReturn As Boolean
Dim objNetwork As Object
Dim i As Integer
On Error GoTo ErrorHandler
blnReturn = False
Set objNetwork = CreateObject([Ô]WScript.Network[Ô])
objNetwork.SetDefaultPrinter v_strPrinterPath
blnReturn = True
CleanExit:
If Not objNetwork Is Nothing Then
Set objNetwork = Nothing
End If
SetDefaultPrinter = blnReturn
Exit Function
ErrorHandler:
MsgBox [Ô]Error No: [Ô] & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbCritical, [Ô]Erro![Ô]
Err.Clear
Resume CleanExit
End Function
Pascoal e Lancecom,
Obrigado pelas respostas, mas creio que preciso ser mais especÃfico em minha pergunta:
A impressora padrão em meu sistema é uma HP, mas quero imprimir no PDFCreator sem precisar ir à caixa de impressoras e mudar.
Como fazer isto usando código?
Grato,
Gardel
Obrigado pelas respostas, mas creio que preciso ser mais especÃfico em minha pergunta:
A impressora padrão em meu sistema é uma HP, mas quero imprimir no PDFCreator sem precisar ir à caixa de impressoras e mudar.
Como fazer isto usando código?
Grato,
Gardel
Ah,
Minha motivação para esta pergunta está neste fórum:
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=389773&varWorld=
Minha motivação para esta pergunta está neste fórum:
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=389773&varWorld=
A solução que encontrei para imprimir um arquivo em pdf foi colocar o PDFCreator como impressora virtual configurada para imprimir automaticamente.
Ao termino da impressão o codigo retorna a antiga impressora como padrão.
On Error GoTo trataerro_impressora
[ô]/-/ Escolher a impressora PDF
[ô]Ao sair elachama a impressora padrão novamente
[ô]Adicionar em References o item: Windows Script Host Object Model (arquivo chamado wshom.ocx)
Dim w As New WshNetwork
[ô]Adicionar em References o item: Windows Script Host Object Model (arquivo chamado wshom.ocx)
ImpPadrao.Text = Printer.DeviceName [ô] guarda a impressora padrão atual
If ImpPadrao.Text <> [Ô]PDFCreator[Ô] Then
w.SetDefaultPrinter ([Ô]PDFCreator[Ô]) [ô] seta a impressora padrão
End If
trataerro_impressora:
If Err.Number <> 0 Then
MsgBox [Ô]é necessário ter o PDFCreator configurado.[Ô] & vbNewLine & _
[Ô]Por favor, configure-o:[Ô] & vbNewLine & _
[Ô]1- Salvar Automaticamente[Ô] & vbNewLine & _
[Ô]2- Nome do Arquivo: Impressão_PDF[Ô] & vbNewLine & _
[Ô]3- Definir a pasta [ô]C:\Desktop\[ô] como padrão de salva do arquivo[Ô] & vbNewLine & _
vbNewLine & Err.Number & vbNewLine & Err.Description
Exit Sub
End If
[ô]A PARTIR DAQUI VOCÊ COLOCA SUA ROTINA DE IMPRESSÃO
Ao termino da impressão o codigo retorna a antiga impressora como padrão.
On Error GoTo trataerro_impressora
[ô]/-/ Escolher a impressora PDF
[ô]Ao sair elachama a impressora padrão novamente
[ô]Adicionar em References o item: Windows Script Host Object Model (arquivo chamado wshom.ocx)
Dim w As New WshNetwork
[ô]Adicionar em References o item: Windows Script Host Object Model (arquivo chamado wshom.ocx)
ImpPadrao.Text = Printer.DeviceName [ô] guarda a impressora padrão atual
If ImpPadrao.Text <> [Ô]PDFCreator[Ô] Then
w.SetDefaultPrinter ([Ô]PDFCreator[Ô]) [ô] seta a impressora padrão
End If
trataerro_impressora:
If Err.Number <> 0 Then
MsgBox [Ô]é necessário ter o PDFCreator configurado.[Ô] & vbNewLine & _
[Ô]Por favor, configure-o:[Ô] & vbNewLine & _
[Ô]1- Salvar Automaticamente[Ô] & vbNewLine & _
[Ô]2- Nome do Arquivo: Impressão_PDF[Ô] & vbNewLine & _
[Ô]3- Definir a pasta [ô]C:\Desktop\[ô] como padrão de salva do arquivo[Ô] & vbNewLine & _
vbNewLine & Err.Number & vbNewLine & Err.Description
Exit Sub
End If
[ô]A PARTIR DAQUI VOCÊ COLOCA SUA ROTINA DE IMPRESSÃO
Tópico encerrado , respostas não são mais permitidas