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.
La funzione DividiInRighe partendo da un testo lungo quanto vuoi, ti restituisce un vettore di stringhe (le varie righe).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


 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando