ciao,
non ho analizzato tutto il codice perchè è sbagliato già in partenza come logica: dividendo la stringa in 3 stringhe senza chiederti se l'ultimo carattere è uno spazio (per esempio dividi la stringa 1 dalla 2 al carattere 47, chi ti dice che lì non c'è una lettera?) rischi di spezzare le parole.
Inoltre non sempre puoi basarti sul numero di caratteri, visto che lo spazio che una stringa occupa dipende anche dal tipo di font.
Se ti interessa ecco il codice per mandare a capo un testo senza troncare stringhe e dando come limite non il numero di caratteri, ma la dimensione orizzontale in mm e la font con cui andrai a stampare.
codice:
Dim Righe() As String
Dim ContatoreRighe as Integer
dim Messaggio as String
printer.ScaleMode = XXXX 'a seconda del caso millimetri, pixel, pollici etc... un numero tra 0 e 7, vedi la proprietà ScaleMode di una form
FF = FreeFile
Open "D:\Elaborazioni\ProvaStampa.txt"
For Input As #FF
X = 0
Do Until EOF(FF)
Line Input #FF, prova(X)
Righe() = DividiInRighe (prova(x), "Arial", 10, false)
Messaggio = ""
For ContatoreRighe = 0 to ubound(Righe)
Messaggio = Messaggio & Righe(ContatoreRighe) & VbCrLf
Next ContatoreRighe
MsgBox Messaggio
X = X + 1
Loop
Close #FF
Private Function DividiInRighe(Stringa As String, Font As String, Dimensione As Double, Grassetto As Integer) As String()
Dim NumeroDiRighe As Integer
Dim i As Integer
Dim Vettore
Dim Righe() As String
Vettore = Split(Stringa, " ")
Printer.FontName = Font
If Grassetto = 1 Then
Printer.FontBold = True
Else
Printer.FontBold = False
End If
Printer.FontSize = Dimensione
NumeroDiRighe = 1
ReDim Preserve Righe(1)
For i = 0 To UBound(Vettore)
Righe(NumeroDiRighe) = Trim(Righe(NumeroDiRighe) & " " & Vettore(i))
If Printer.TextWidth(Righe(NumeroDiRighe)) > AreaDiStampaOrizzontale Then
Righe(NumeroDiRighe) = Trim(Left(Righe(NumeroDiRighe), Len(Righe(NumeroDiRighe)) - Len(Vettore(i))))
NumeroDiRighe = NumeroDiRighe + 1
ReDim Preserve Righe(NumeroDiRighe)
Righe(NumeroDiRighe) = Vettore(i)
End If
Next i
DividiInRighe = Righe
End Function
La funzione DividiInRighe partendo da un testo lungo quanto vuoi, ti restituisce un vettore di stringhe (le varie righe).