IMPRIMIR ARQUIVO WORD PELO VB6

CLEBERBALMEIDA 16/09/2013 11:24:02
#428891
Estou imprimindo um arquivo do Word, pelo Visual Basic 6, porém, ele sempre imprimi na impressora que está como padrão no Windows.

Quero que quando o usuário do programa, clicar em imprimir, abra aquela caixa de impressoras, para o usuário selecionar a impressora que quer imprimir, após selecionar e clicar em OK, começa a impressão, tem como alguém me ajudar com isso...

O código que estou usando para imprimir é esse:

Dim Word As New Word.Application
Word.Documents.Open [Ô]c:\Teste\Refeição.docx[Ô]
Word.Visible = True
Word.PrintOut
Word.Quit
Set Word = Nothing
CLEBERBALMEIDA 17/09/2013 15:22:05
#428966
Ninhuem?
ALVAROVB2009 17/09/2013 17:18:10
#428973
Cara acho que isso pode te ajudar
http://www.macoratti.net/dica30.htm
CLEBERBALMEIDA 17/09/2013 17:47:53
#428979
Alvaro, obrigado, porém, foi ai mesmo que peguei o código e estou conseguindo imprimir normal, porém, o que quero, é saber como fazer para escolher em qual impressora imprimir esse arquivo do word, dessa forma que está, só imprimi direto na impressora que está como padrão.

Sabe como faço para quando clicar em imprimir, não imprimir direto e sim abrir uma caixa para escolher a impressora?

Valew!
MARCELO.TREZE 18/09/2013 09:13:41
#428994
Resposta escolhida
Colega coloque em um form:

01 Combobox e nomeie de [txt-color=#0000f0]cboImpressora[/txt-color]
01 CommandButton e nomeie de [txt-color=#0000f0]cmdImprimir[/txt-color]

e cole o seguinte codigo

Private Sub form_load()

Dim Impressoras As Printer

cboImpressora.Clear

For i = 0 To Printers.Count - 1
cboImpressora.AddItem Printers(i).DeviceName
Next i

If cboImpressora.ListCount > 0 Then cboImpressora.ListIndex = 0

End Sub



Private Sub cmdImprimir_Click()

For Each Impressoras In Printers
Set Printer = Impressoras
If Impressoras.DeviceName = cboImpressora.Text Then Exit For
Next

Dim Word As New Word.Application
Word.Documents.Open [Ô]c:\Teste\documento.docx[Ô]
Word.Visible = True
Word.PrintOut
Word.Quit
Set Word = Nothing

End Sub


pronto basta escolher a impressora no combo e mandar imprimir
ALVAROVB2009 18/09/2013 09:31:17
#428999
[ô]Carrega um combo com todas as impressoras do sistema
Dim prn As Printer
For Each prn In Printers
Combo1.AddItem prn.DeviceName
Next
Winsock1.LocalPort = 1001
Winsock1.Listen

Private Sub Combo1_Click()
NomeImpressora = Combo1.Text
End Sub


[ô]Aqui vc carrega para imprimir na impressora selecionada
Dim Impressora As Printer
Dim Imp_Encontrada As String
For Each Impressora In Printers
Set Printer = Impressora
Imp_Encontrada = Impressora.DeviceName
If Impressora.DeviceName = NomeImpressora Then [ô]Nome da Impressora instalada no Windows
Imp_Encontrada = Impressora.DeviceName
Exit For
End If
Next


Acho que isso pode te ajudar, com isso vc pode fazer um ajuste e adaptar para o que vc precisa
CLEBERBALMEIDA 18/09/2013 11:49:01
#429015
Pessoal, nos dois códigos acontecem a mesma coisa, aparecem as impressoras no combobox, porém, quando coloco para imprimir, sempre imprimi na impressora que está como padrão no Windows.

Estou enviando o exemplo que fiz com o código do Marcelo, se puderem alterar e ver no que estou errando..

Valew
ALVAROVB2009 19/09/2013 10:13:14
#429074
Cleber mandei no seu email um projeto de mudança de impressora padrão pelo crystal

Acho que isso pode te ajudar
MARCELO.TREZE 19/09/2013 10:44:22
#429075
Realmente não funciona o código acima mas agora testado a maneira mais simples.

coloque um commondialog em um form

-->Project/components - Microsoft Common Dialog Control


acrescente o mesmo em um form juntamente com um command button e cole:

Private Sub Command1_Click()
On Error GoTo Cancelado
Dim Word As New Word.Application
CommonDialog1.CancelError = True
CommonDialog1.ShowPrinter
Word.Documents.Open [Ô]c:\pasta\documento.docx[Ô]
Word.Visible = True
Word.PrintOut
Word.Quit
Set Word = Nothing
Exit Sub
Cancelado:
Err.Clear
End Sub



Eu testei aqui e funcionou que é uma maravilha
CLEBERBALMEIDA 19/09/2013 13:10:35
#429078
Obrigado a todos, era exatamente o que eu queria...

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