Imprimir

Hola, necesito saber como puedo imprimir con el objeto printer, una caja de texto y que salga colocado en la hoja donde yo quiera.
He utilizado esta instrucción:
Printer.FontSize = 12
Printer.CurrentY = 2500
Printer.Print Text1.Text
Printer.EndDoc
Pero solo me coloca la primera linea que tenga en la caja de texto.
Gracias por adelantado.

2 respuestas

Respuesta
1
Tienes que controlar todas aquellas cosas que los programas controlan al imprimir:
1. Si tengo varias líneas, hay que imprimir en la siguiente línea.
2. Si el texto no me cabe en una línea tienes que romper el texto y pasar el resto a la siguiente.
3. Si he llegado al final de la página, salta a la siguiente, etc.
Te envío una rutina que imprime un texto. Espero que te ayude.
Private Sub PrintText(ByVal Text As String)
Dim sLines() As String
Dim i As Long
Dim nLinesInPage As Long
Dim sPrint As String
Const LINES_PER_PAGE = 80
sLines = Split(Text, vbCrLf, , vbBinaryCompare)
For i = 0 To UBound(sLines)
If sLines(i) = "" Then
Printer.Print ""
nLinesInPage = nLinesInPage + 1
If nLinesInPage >= LINES_PER_PAGE Then
Printer.NewPage
nLinesInPage = 0
End If
Else
While sLines(i) <> ""
If Printer.TextWidth(sLines(i)) > Printer.ScaleWidth Then
Dim nChars As Long
nChars = 1
Do
sPrint = Left(sLines(i), nChars)
sLines(i) = Right(sLines(i), Len(sLines(i)) - nChars)
nChars = nChars + 1
Loop While Printer.TextWidth(sPrint & Left(sLines(i), 1)) < Printer.ScaleWidth
Else
sPrint = sLines(i)
sLines(i) = ""
End If
Printer.CurrentX = 0
Printer.CurrentY = nLinesInPage * (Printer.ScaleHeight \ LINES_PER_PAGE)
Printer.Print sPrint
nLinesInPage = nLinesInPage + 1
If nLinesInPage >= LINES_PER_PAGE Then
Printer.NewPage
nLinesInPage = 0
End If
Wend
End If
Next
Printer.EndDoc
End Sub
Respuesta
-1
No he usado nunca ese objeto, pero por el código que me pones me da la impresión de que tienes que definir el área de impresión a utilizar, por lo que además de indicarle el currentY (posición vertical) tendrá otros atributos el objeto tales como CurrentX, width (ancho), height (alto), ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas