PROBLEMA COM SELECAO DE IMPRESSORA
Pessoal, fiz um código onde armazeno numa tabela o nome da impressora que escolhi em um form.
Depois, faço a seguinte função para chamar a impressora para um serviço:
'-->CHAMAR IMPRESSORA PADRAO DE BOLETOS
'-->FIM DE CHAMAR IMPRESSORA PADRAO DE BOLETOS
Quando vou executar a impressao nessa parte:
With ChamaImpPadrao
.CurrentX = 0
.CurrentY = 0
.DrawStyle = 0
.PrintQuality = vbPRPQDraft
.ScaleMode = Picture1.ScaleMode
.ColorMode = vbPRCMMonochrome
.ScaleHeight = Picture1.ScaleHeight
.ScaleWidth = Picture1.ScaleWidth
.ScaleTop = Picture1.ScaleTop
.ScaleLeft = Picture1.ScaleLeft
End With
dá a mensagem "383 - 'CurrentX' property is read-only".
Alguém sabe porque???
Depois, faço a seguinte função para chamar a impressora para um serviço:
'-->CHAMAR IMPRESSORA PADRAO DE BOLETOS
Public Function ChamaImpPadrao() As Printer
Set cConn = New ADODB.Connection
Set rs = New ADODB.Recordset
If ConectaBanco = True Then
SQL = " Select ImpressoraBoleto from tb_ImpBoleto "
rs.Open SQL, cConn, adOpenDynamic, adLockBatchOptimistic
If Not rs.EOF Then
For Each ChamaImpPadrao In Printers
If ChamaImpPadrao.DeviceName = rs("ImpressoraBoleto") Then
Set Printer = ChamaImpPadrao
Exit For
End If
Next ChamaImpPadrao
End If
End If
End Function
'-->FIM DE CHAMAR IMPRESSORA PADRAO DE BOLETOS
Quando vou executar a impressao nessa parte:
With ChamaImpPadrao
.CurrentX = 0
.CurrentY = 0
.DrawStyle = 0
.PrintQuality = vbPRPQDraft
.ScaleMode = Picture1.ScaleMode
.ColorMode = vbPRCMMonochrome
.ScaleHeight = Picture1.ScaleHeight
.ScaleWidth = Picture1.ScaleWidth
.ScaleTop = Picture1.ScaleTop
.ScaleLeft = Picture1.ScaleLeft
End With
dá a mensagem "383 - 'CurrentX' property is read-only".
Alguém sabe porque???
Se vc tirar esse código o q acontece?
Não posso tirar este código porque são as caracterÃÂÂsticas da medida do boleto. A questão é que antes eu usava o commondialog.showprinter pra apresentar seleçao de impressoras, mas o cliente não quis desse jeito, ele queria selecionar uma vez e todas as vezes que ele fosse imprimir boletos fosse direto para a impressora que ele escolheu. Qdo era com o commondialog.showprinter funcionava normal, sem essa mensagem.
Tente assim:
Dim Impressora as Printer
Set Impressora = ChamaImpPadrao
With Impressora
.CurrentX = 0
.CurrentY = 0
.DrawStyle = 0
.PrintQuality = vbPRPQDraft
.ScaleMode = Picture1.ScaleMode
.ColorMode = vbPRCMMonochrome
.ScaleHeight = Picture1.ScaleHeight
.ScaleWidth = Picture1.ScaleWidth
.ScaleTop = Picture1.ScaleTop
.ScaleLeft = Picture1.ScaleLeft
End With
Eu n entendi esse seu For Each..pra q serve?
MARCELOHF, tentei sua alternativa mas continua dando a mesma mensagem.
SINKERTEC, o For Each verifica dentre as impressoras instaladas se alguma é igual àque eu defini em minha tabela tb_ImpBoleto.
Meu, não sei mais o que fazer.
SINKERTEC, o For Each verifica dentre as impressoras instaladas se alguma é igual àque eu defini em minha tabela tb_ImpBoleto.
Meu, não sei mais o que fazer.
Qtas e quais os tipos de impressoras instaladas na máquina?
SINKERTEC E MARCELOHF obrigado pela ajuda, consegui resolver aqui. Fiz o seguinte:
na função publica tirei o Set Printer = ChamaImpPadrao
Depois fiz
Set Printer = ChamaImpPadrao
e no With coloquei
With Printer
. blá blá
end With
Deu certo!
na função publica tirei o Set Printer = ChamaImpPadrao
Depois fiz
Set Printer = ChamaImpPadrao
e no With coloquei
With Printer
. blá blá
end With
Deu certo!
é amigo... acho que falei besteira... rsrs
Vc está tentando alterar algumas propriedades da impressora é isto??
Como realiza a impressão?
Através do Printer.Print??
Se sim, faça desta forma:
Vc está tentando alterar algumas propriedades da impressora é isto??
Como realiza a impressão?
Através do Printer.Print??
Se sim, faça desta forma:
call ChamaImpPadrao()
With Printer
.CurrentX = 0
.CurrentY = 0
.DrawStyle = 0
.PrintQuality = vbPRPQDraft
.ScaleMode = Picture1.ScaleMode
.ColorMode = vbPRCMMonochrome
.ScaleHeight = Picture1.ScaleHeight
.ScaleWidth = Picture1.ScaleWidth
.ScaleTop = Picture1.ScaleTop
.ScaleLeft = Picture1.ScaleLeft
End With
Tópico encerrado , respostas não são mais permitidas