Veja se ajuda:
Enviando para impressora um TextBox multiline
1. insira num módulo .bas:
Public Declare Function SetTextAlign Lib "gdi32" (ByVal hdc As Long, ByVal wFlags As Long) As Long
Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wmsg As Long, ByVal wparam As Long, lparam As Any) As Long
Public Const TA_CENTER = 0 'Alinhar a esquerda TA_CENTER = 0, alinhar no centro TA_CENTER = 6
Public Function Multiline(text As TextBox, margemE As Integer, top As Integer, linhas As Integer)
Dim i As Integer
Dim ta As Long
Dim TextLines As Long
Dim TextBuff As String
Dim CharRet As Long
ta = SetTextAlign(Printer.hdc, TA_CENTER)
Printer.CurrentY = top
' Define o nuemro de linhas do text box
TextLines = linhas
' Extrai e imprime as linhas do text box
For i = 0 To TextLines - 1
TextBuff = Space(2000)
Printer.CurrentX = margemE
' Ajusta o buffer para a linha
Mid(TextBuff, 1, 1) = Chr(79 And &HFF)
Mid(TextBuff, 2, 1) = Chr(79 &H100)
CharRet = SendMessage(text.hwnd, &HC4, i, ByVal TextBuff)
Printer.Print Left(TextBuff, CharRet)
Next i
' Reajusta para o valor original
ta = SetTextAlign(Printer.hdc, ta)
End Function
2. Crie um formulário novo com um textbox com a
propriedade multiline=true (o textbox eu dei o nome de TxtVlrExtenso;
3. No formulário criado, crie um botao e aplique a este botao o código:
With Printer
.ScaleMode = vbMillimeters 'usando milimetros
.ScaleWidth = 210 'largura do papel(A4)
.ScaleHeight = 297 'altura do papel(A4)
.ScaleLeft = 0
.ScaleTop = 0
End With
Multiline TxtVlrExtenso, 67, 125, 2
Desta forma, você pode usar a função multiline para imprimir vários
controles de texto com mais de uma linha...
A sintaxe que você usa no caso se refere a impressão da seguinte forma:
Multiline textbox, margemsuperior, margemesquerda, numerodelinhas