Primero el botón de imprimir.
Que llama a el procedimiento de impresión.
Printer.PaperSize = 5 'oficio
Printer.Orientation = 1
Printer.ScaleMode = 7
Printer.FontSize = 10
MsgBox "Prepare para Imprimir Hoja: Oficio", vbInformation, "Deudores"
If Sel_Imp = 1 Then
Call Imp_Grilla_Ape
Else
If Sel_Imp = 2 Then
Call Imp_Grilla_adt
Else
MsgBox "Posicionese En La Solapa Que Desea Imprimir", vbInformation, "Imprimir Deudores"
End If
End If
========================
procedimiento de impresion
que llama a un encabezado.
Public Sub Imp_Grilla_adt()
With MSadt 'nombre de la grilla MSHFLEXGRID
Y = 2.7
Call Encabezado_16
For A = 1 To .Rows - 1
Printer.CurrentY = Y
Printer.CurrentX = 0.7
Printer.Print .TextMatrix(A, 0)
Printer.FontSize = 8
Printer.CurrentY = Y
Printer.CurrentX = 2.5
Printer.Print .TextMatrix(A, 1) & " " & .TextMatrix(A, 2)
Printer.FontSize = 10
Printer.CurrentY = Y
Printer.CurrentX = 9.1
Printer.Print .TextMatrix(A, 3)
Printer.CurrentY = Y
Printer.CurrentX = 12 - Printer.TextWidth(.TextMatrix(A, 4)) 'ESTA MANERA LO ALINEO A LA IZQUIERDA
Printer.Print .TextMatrix(A, 4)
If .TextMatrix(A, 5) <> "" Then
If IsNumeric(.TextMatrix(A, 5)) Then
Printer.CurrentY = Y
Printer.CurrentX = 14.5 - Printer.TextWidth(.TextMatrix(A, 5))
Printer.Print .TextMatrix(A, 5)
Else
Printer.CurrentY = Y
Printer.CurrentX = 13
Printer.Print .TextMatrix(A, 5)
End If
End If
Y = Y + 0.5
'ACA PREGUNTO SI ES FINAL DE HOJA
If Y > 34 Then
Printer.Line (0.2, 2.5)-(2.2, Y), 1, B
Printer.Line (2.2, 2.5)-(8.8, Y), 1, B
printer. Line (8.8, 2.5)-(10.1, y), 1, b
tiro las lineas finales
pido nueva página
y llamo al encabezado
Printer.NewPage
Call Encabezado_16
Y = 2.7
End If
Next A 'OTRA LINEA
Printer.EndDoc
'MANDO A IMPRIMIR TODO
End With ' CIERRO EL WITH DE LA GRILLA
'===========================
'ENCABEZADO
'SIEMPRE ES EL MISMO
'ESTA MANERA PUEDEN SER ENCABEZADOS O CUADROS TOTALES PEDIDOS A LA BASE DE DATOS
Public Sub Encabezado_16()
Printer.CurrentY = 0
Printer.CurrentX = 0.5
Printer.Print Nombre_Col
Printer.CurrentY = 0
Printer.CurrentX = 16
Printer.Print "Pagina Nº: " & Printer.Page
'Printer.FontSize = 14
Printer.CurrentY = 0.5
Printer.CurrentX = 6
Printer.Print "SALDOS DEUDORES AL: " & Maskfechaimp.Text
'Printer.FontSize = 10
Printer.CurrentY = 1.8
Printer.CurrentX = 10.3
Printer.Print "FACTURADO"
Printer.CurrentY = 1.8
Printer.CurrentX = 13
Printer.Print "COBRADO"
Printer.CurrentY = 1.8
Printer.CurrentX = 15.8
Printer.Print "DEUDOR"
'LINEAS DEL ENCABEZADO
Printer.Line (0.2, 1.2)-(2.2, 2.5), 1, B
Printer.Line (2.2, 1.2)-(8.8, 2.5), 1, B
Printer.Line (8.8, 1.2)-(10.1, 2.5), 1, B
Printer.Line (10.1, 1.2)-(12.6, 2.5), 1, B
Printer.Line (12.6, 1.2)-(15.2, 2.5), 1, B
Printer.Line (15.2, 1.2)-(18, 2.5), 1, B
End Sub
Esto es mucho laburo pero nunca falla y tienes control absoluto creo que agregando más variables se puede tener un control muy bueno para realizar menos modificaciones
Esto es cuestión de agarrar la regla y empezar a diagramar tu impresión y después prueba y error.
Saludos si no entendés algo te dejo mi mail y msn y charlamos por ahí.
[email protected](A otras personas que vean este mail, sino mandan pregunta por todo expertos no lo respondo).