SELECIONAR IMPRESSORA

GNCNET 23/11/2011 12:05:18
#389836
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
PASCOAL 23/11/2011 12:22:18
#389837
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

LANCECOM 24/11/2011 18:39:02
#389991
[ô]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
GNCNET 24/11/2011 20:55:24
#389998
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
GNCNET 24/11/2011 21:04:40
#389999
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=
GNCNET 23/06/2013 09:45:33
#425104
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


Tópico encerrado , respostas não são mais permitidas