Buenas colegas, en esta oportunidad con cierta duda
He terminado de hacer un codigo para Imprimir Factura/Boleta, lo probe en una impresora canon del trabajo y corrio bien, cuando la lleve a otra PC con otra Impresora de la MIsma marca, me sale desalineado, y quisiera saber en que estoy fallando, lo que hago es solo darl en ScaleMode = 4, pero en un foro leí que debería ponerle el tamaño de la Factura o de la Boleta en ScaleHeigh y ScaleWIdth del obj. Printer, pero quisiera saber porque el fallo, el codigo les pongo a continuación:
' ******************************************************************************************************** INICIO
Private Sub CmdImprimir_Click()
On Error GoTo Impresion
'*********************************************** Verificando Datos Completos
'MsgBox Printer.ScaleHeight & " ------ " & Printer.ScaleWidth
' MsgBox Printer.ScaleMode
'MsgBox Printer.CurrentX & " ------ " & Printer.CurrentY
If CboTipoDoc.Text = "FACTURA DE VENTA" Then
'********************************* Verificando DATOS DEL CLIENTE
If Trim(TxtCliente.Text) = "" Then
MsgBox "Ingrese la Razón Social del Cliente", vbInformation, "Faltan Datos"
TxtCliente.SetFocus
Exit Sub
End If
'********************************* Verificando RUC DEL CLIENTE
If Len(TxtRUC.Text) = 0 Then
MsgBox "Ingrese el RUC del Cliente", vbInformation, "Faltan Datos"
TxtRUC.SetFocus
Exit Sub
Else '********************************* Verificando RUC DEL CLIENTE CON 11 CARACTERES
If Len(TxtRUC.Text) <> 11 Then
MsgBox "El RUC del Cliente debe tener 11 dígitos", vbInformation, "Faltan Datos"
TxtRUC.SetFocus
Exit Sub
End If
End If
'Printer.ScaleHeight = 1600 'Alto
'Printer.ScaleWidth = 2120 'Ancho
Else 'Si es BOLETA DE VENTA
'Printer.ScaleHeight = 1580 'Alto
'Printer.ScaleWidth = 1060 'Ancho
End If
'*********************************************** Imprimiendo
Printer.ScaleMode = 4
Printer.FontName = "Microsoft Sans Serif"
Printer.FontSize = 8
'************************************************ C A B E Z E R A *************************************
'///////////////////////////////////////////////Imprimiendo el Nombre del Cliente
Printer.CurrentX = 10 'Horizontal
Printer.CurrentY = 9.5 'Vertical
Printer.Print Trim(TxtCliente.Text)
'///////////////////////////////////////////////Imprimiendo la Direccion del Cliente
If Trim(TxtDir.Text) <> "" Then
Printer.CurrentX = 12 'Horizontal
Printer.CurrentY = 11 'Vertical
Printer.Print Trim(TxtDir.Text)
End If
'///////////////////////////////////////////////Imprimiendo la Fecha de la Cabezera
'***********************************************
Printer.CurrentX = 64.5 'Horizontal
Printer.CurrentY = 11.5 'Vertical
Printer.Print CStr(Day(DTFecha.Value))
'*************************************
Printer.CurrentX = 73 'Horizontal
Printer.CurrentY = 11.5 'Vertical
Printer.Print CStr(MonthName(Month(DTFecha.Value)))
'*************************************
Printer.CurrentX = 94 'Horizontal
Printer.CurrentY = 11.5 'Vertical
Printer.Print Right(CStr(Year(DTFecha.Value)), 1)
'***********************************************
'///////////////////////////////////////////////Imprimiendo el RUC del Cliente
If Trim(TxtRUC.Text) <> "" Then
Printer.CurrentX = 11 'Horizontal
Printer.CurrentY = 12.5 'Vertical
Printer.Print Trim(TxtRUC.Text)
End If
'///////////////////////////////////////////////Imprimiendo los Articulos
RsTemp.MoveFirst
Dim x As Single
x = 16 'Vertical para todo el item
Do While Not RsTemp.EOF
'************************************
'Cantidad
Printer.CurrentY = x 'Vertical para todo el item
Printer.CurrentX = 6 'Horizontal
Printer.Print RsTemp(0)
'Descripción
Printer.CurrentY = x 'Vertical para todo el item
Printer.CurrentX = 15 'Horizontal
Printer.Print RsTemp(1)
'Precio Unitario
Printer.CurrentY = x 'Vertical para todo el item
Printer.CurrentX = 73 'Horizontal
Printer.Print RsTemp(2)
'Importe
Printer.CurrentY = x 'Vertical para todo el item
Printer.CurrentX = 85 'Horizontal
Printer.Print RsTemp(3)
'************************************
x = x + 1.5
RsTemp.MoveNext
Loop
'///////////////////////////////////////////////Imprimiendo los Letras-Precio
Printer.CurrentX = 10 'Horizontal
Printer.CurrentY = 31 'Vertical
Printer.Print Trim(LblMsje.Caption)
'///////////////////////////////////////////////Imprimiendo Subtotal
Printer.CurrentX = 85 'Horizontal
Printer.CurrentY = 31 'Vertical
Printer.Print Trim(TxtSubtotales.Text)
'///////////////////////////////////////////////Imprimiendo IGV
If Val(TxtIgv.Text) > 0 Then
Printer.CurrentX = 85 'Horizontal
Printer.CurrentY = 32.5 'Vertical
Printer.Print Trim(TxtIgv.Text)
End If
'///////////////////////////////////////////////Imprimiendo Total
Printer.CurrentX = 85 'Horizontal
Printer.CurrentY = 34 'Vertical
Printer.Print Trim(TxtTotal.Text)
'///////////////////////////////////////////////Imprimiendo la Fecha del Detalle
'***********************************************
Printer.CurrentX = 25 'Horizontal
Printer.CurrentY = 34 'Vertical
Printer.Print CStr(Day(DTFecha.Value))
'*************************************
Printer.CurrentX = 32 'Horizontal
Printer.CurrentY = 34 'Vertical
Printer.Print Right("0" & CStr(Month(DTFecha.Value)), 2)
'*************************************
Printer.CurrentX = 37.5 'Horizontal
Printer.CurrentY = 34 'Vertical
Printer.Print Right(CStr(Year(DTFecha.Value)), 2)
'***********************************************
'******************************************************************************************************
Printer.EndDoc
Exit Sub
Impresion:
If Err.Number = 482 Then
MsgBox "No Existe ninguna Impresora instalada en su PC", vbExclamation, "Fallo la Impresión"
Else
MsgBox Err.Description, vbExclamation, "Fallo la Impresión"
TxtCliente.SetFocus
End If
End Sub