Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
596to600
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

txt endlosstring

txt endlosstring
15.04.2005 19:21:20
Ingo Harder
Hallo,
grundsätzlich kann ich *.txt im/exportieren.
Bei folgender Sache habe ich allerdings keinen Schimmer.
In einem *.txt file liegt ein(1) String mit 141.000 Zeichen.
Wie bekomme ich diesen String aufgeteilt nach
je ein Zeichen pro Zelle?
Zeichen 1 = A1
Zeichen 2 = A2
....
Zeichen 10.000 = A10000
Die nächsten Blöcke dann jeweils
im Bereich B, C usw.
Einzelne Zeichen werden dann ggf. ersetzt/gelöscht.
Tja, und dann das ganze wieder als ein String(1) zurück in ein *.txt
Vielen Dank!
Ingo

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: txt endlosstring
15.04.2005 19:43:19
Luc
Hallo Ingo,
ich hab zwar mal 'ne Fkt geschrieben, die die Zeichen eines string auf Zellen aufteilt, fürchte aber, die nutzt bei der Größenordnung nichts. Sowas kann xl nicht handlen! Das ist eine Frage des Einlesens. Zuvor müsstest du nach jedem Zeichen ein sonst nicht verwendetes, von xl als Wortmarke akzeptierbares Zeichen in den Urtext einsetzen, vermute ich. Sehe da aber doch ziemliche Probleme für die Automatisierung. Oder du musst den Text zeilenweise oder sonstwie in Paketen einlesen. Glaube mich zu erinnern, vor Jahren mal mit dem Read-Befehl operiert zu haben. Wenn dir das gelingt, ist das Aufteilen auf Zellen nur noch ein Klacks. Um sequentiell dann wieder in eine .txt-Datei zu schreiben, ist wohl der Write-Befehl zu verwenden.
Hoffe, das hilft
Gruß Luc :-?
Anzeige
AW: txt endlosstring
15.04.2005 20:08:34
andre
Hallo Ingo,
wenn Du das File einliest kannst Du alles in einen String packen und diesen per Schleife aufteilen. Hier mal ein codeschnipsel. die eingelesenen Dateien waren teilweise über 800 KB groß. Wenn Du jedes Zeichen in eine Zelle tun willst kannst Du den String zeichenweise durchgehen. Ich habe immer nach chr(10) gesucht und den String dort geteilt.
...
Do While Not EOF(file_nr) ' Auf Dateiende abfragen.
Line Input #file_nr, EingangsDaten ' Datenzeilen lesen.
' PC-Dateien mit richtigem Zeielenende - unter UNIX alle Zeilen
' in einem String !
For i = 1 To 15000
j = Len(EingangsDaten)
If j = 0 Then i = 15000: GoTo j_null
lmp = InStr(1, EingangsDaten, Chr(10)) 'lmp kann auch eine fester Wert sein
EingangsDatenLinks = Left(EingangsDaten, lmp - 1)
...
EingangsDaten = (Right(EingangsDaten, j - lmp)) 'linken Teil entfernen
j_null:
Next
Loop
Anzeige
AW: txt endlosstring
15.04.2005 20:25:53
Ingo Harder
Hallo Andre und Luc,
dieser String ist das Ergebnis/die Ascii-Darstellung nach der Umwandlung
einer Datei von 8bit nach 7bit(Base64)
Dieser String hat keine Umbrüche o.ä. sondern ist nur eine
Folge aus 64 versch. Asciizeichen. Irgendwelche Steuerzeichen würden
eine "Rückwandlung" in 8bit vermtl. unmöglich machen.
Ich lade Excel hier gerade Schrittweise, um die "Schmerzgrenze" Kein Speicher usw.
auszutesten.
Gleichwohl würde ich mich freuen, wenn ich die Fkt. von Luc bekommen könnte ?
Testen kann nix schaden ;-)
Ingo
AW: txt endlosstring
15.04.2005 20:52:23
andre
Hallo Ingo,
mit VBA gut solltest Du doch aus meinem code was machen können.
ungetestet und hier geschrieben:
Do While Not EOF(file_nr) ' Auf Dateiende abfragen.
Line Input #file_nr, EingangsDaten ' Datenzeilen lesen. Ist nur eine.
Spalte=1
For i=1 to len(EingangsDaten)
if i=65537 or i= 131073 then spalte=spalte+1 'wenn A voll ist dann in B, analog dann C
cells(Spalte,i)= mid(EingangsDaten,(i-(spalte-1)*65536),1)
Next
Loop
Grüße, Andre
Anzeige
AW: txt endlosstring
16.04.2005 17:10:51
andre
Hallöchen,
Fehlerkorrektur:
falsch
cells(Spalte,i)= mid(EingangsDaten,(i-(spalte-1)*65536),1)
-- Spalte und Zeile vertauscht
richtig
cells(i,Spalte)= mid(EingangsDaten,(i-(spalte-1)*65536),1)
wenn mit mehr als 3 Spalten daten zu rechnen ist sollte man die Abfrage
if i = 65... variabel gestalten mit
if i mod 65537 = 0 then spalte=spalte+1
AW: txt endlosstring
15.04.2005 21:00:53
Luc
Hallo Ingo,
hier mal die Funktion:

Function T2CharVect(ByVal Text As String) As Variant
Rem wandelt Texte in Einzelzeichenvektoren (Feld: 1 Zchn/Zelle) um -
'   (horizontale) Ausgabe in Zellen nur als/in MatrixFormel möglich
'   Vs 1.0 - 2005 - Autor: L.Schuller - Erstpubl: www.herber.de - 20050415
Dim i As Integer, n As Integer, z() As String
n = Len(Text) - 1
ReDim z(n) As String
For i = 0 To n
z(i) = Mid(Text, i + 1, 1)
Next i
T2CharVect = z
End Function 

Wenn du die Einzelzeichen in Zeilen ausgeben willst, musst du die Funktionsausgabe mit MTRANS transformieren, also so: {=MTRANS(T2CharVect(textzelle))}
Bei einer Anwendung im Tabellenblatt müssen mindestens so viele Zellen markiert wdn wie der Text Zeichen hat. In der 1.markierten Zelle steht die Formel, die mit {Ctrl}{Shift}{Enter} abgeschlossen wird. Bei Einsatz in Makros muss der von der Funktion erzeugte Vektor übernommen und seine Werte entsprechend verteilt wdn.
Aber wie gesagt, das hilft erst, wenn du den Text irgendwie portioniert hast. Vielleicht über Eingabe mittels Input-Befehl. Hier läuft parallel so ein ähnlicher Thread, an dem ich mich auch beteiligt hatte.
Gruß Luc :-?
Anzeige
AW: txt endlosstring
15.04.2005 21:38:29
ingoG
Hallo Ingo,
versuchs mal so:
Gruß Ingo
PS eine Rückmeldung wäre nett...

Sub aaaa()
Dim i%
Dim text As String
Open "c:\test.txt" For Input As #1
Do While Not EOF(1) ' Auf Dateiende abfragen.
Line Input #1, text
For i = 1 To Len(text)
Cells(i Mod 10000, Int(i / 10000) + 1) = Mid(text, i, 1)
Next i
Loop
Close #1
End Sub

AW: txt endlosstring
15.04.2005 22:30:41
Ingo Harder
Hallo Ingo,
dafür ist der String wohl zu groß.
Bei ca. 30000 Zeichen setzt der
Überlauf ein.
Am erfolgversprechensten sieht es noch
mit dem Lösungsansatz von Andre aus.
Allerdings bekomme ich jetzt noch einen
objektdefinierten Fehler ;-) Ich sehe aber
nur noch Buchstabensuppe vor mir..
Für heute ist Feierabend.
Dank an alle fürs' erste und noch einen
schönen Abend.
Ingo
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige