Schon geraume Zeit beschäftigt mich das Thema BLOCKTEXT, d.h. das zeilenweise zerteilen eines langen Textes in (fast) gleichlange Textzeilen, ohne dabei die Wörter zu "zerteilen".
In den Tiefen des WWW habe ich eine Lösung für Excel gefunden, bei der Text der aktuellen Zelle in mehrere Zeilen (mit einer anzugebenden Zeilen-Länge) automatisch umgebrochen wird. So etwas hätte ich gerne für die Eingabeaufforderung (als VBScript), so daß ich zukünftige Textdateien (Plain Text) nicht erst ins Excel importieren und nach Abarbeitung des Makros wieder exportieren muss.
Hier einmal der Quelltext für VBA
Als Neuling habe ich von VBA bzw. VBS nicht allzuviel Ahnung,von VB oder VB.,Net gleich gar nicht.Vielleicht kann mir das irgendjemand eine Hilfe geben.
Danke ersteinmal
In den Tiefen des WWW habe ich eine Lösung für Excel gefunden, bei der Text der aktuellen Zelle in mehrere Zeilen (mit einer anzugebenden Zeilen-Länge) automatisch umgebrochen wird. So etwas hätte ich gerne für die Eingabeaufforderung (als VBScript), so daß ich zukünftige Textdateien (Plain Text) nicht erst ins Excel importieren und nach Abarbeitung des Makros wieder exportieren muss.
Hier einmal der Quelltext für VBA
Visual Basic-Quellcode
- Sub VerteilText()
- Dim dum$, SollBr%, anzT%, tt$()
- Dim zz1&, zze&, zz&, ss1%, sse%, ss%, nn&, vv&, ii%
- dum = InputBox("Bitte die maximale Breite des Textes eingeben.", _
- "Verteilung für die ausgewählten Zellen", 62)
- If dum = "" Then Exit Sub
- If IsNumeric(dum) Then SollBr = dum
- If SollBr < 3 Then
- MsgBox "Max. Breite ist kleiner als 3!", vbCritical, "VerteilText"
- Exit Sub
- End If
- anzT = 3
- ReDim tt(anzT)
- ' --------------------- Nummern der Start- und Endzeile/-spalte
- With Intersect(Selection, ActiveSheet.UsedRange)
- zz1 = .Row
- zze = .Rows.Count + zz1 - 1
- ss1 = .Column
- sse = .Columns.Count + ss1 - 1
- End With
- ' --------------------------------------------------- Verteilen
- For zz = zze To zz1 Step -1
- vv = 0
- For ss = ss1 To sse
- nn = 0
- tt(nn) = Cells(zz, ss)
- Do While Len(tt(nn)) > SollBr
- ii = InStrRev(tt(nn), " ", SollBr + 1)
- If ii > 0 Then
- ' Teiltexte ermitteln
- If nn + 1 > anzT Then anzT = anzT + 3: ReDim Preserve tt(anzT)
- tt(nn + 1) = Mid(tt(nn), ii + 1)
- tt(nn) = Left(tt(nn), ii - 1)
- nn = nn + 1
- Else
- ' Wort zu lang
- MsgBox "Zu langes Wort in Zelle " _
- & Cells(zz, ss).Address(False, False, xlA1), _
- vbInformation, "VerteilText"
- Exit Do
- End If
- Loop
- ' Teiltexte einfügen, evtl. in neue Zeilen
- If nn > 0 Then
- For ii = 0 To nn
- If ii > vv Then ActiveSheet.Rows(zz + ii).Insert: vv = vv + 1
- Cells(zz + ii, ss) = tt(ii)
- Next ii
- End If
- Next ss
- Next zz
- End Sub
Als Neuling habe ich von VBA bzw. VBS nicht allzuviel Ahnung,von VB oder VB.,Net gleich gar nicht.Vielleicht kann mir das irgendjemand eine Hilfe geben.
Danke ersteinmal