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).
 