Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1040to1044
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
Inhaltsverzeichnis

VBA > Text keinen Zeilenumbruch

VBA > Text keinen Zeilenumbruch
18.01.2009 01:55:08
Gopla
Hallo liebe Gemeinschaft,
ich habe ein Problem, dessen ich nicht Herr werde und welches schwer zu beschreiben ist:
Ich habe einen Text.txt, welcher in VBA durch
intHandle = FreeFile
Open "C:\test.txt" For Input As #intHandle
geöffnet wird und anschließend durch
Line Input #intHandle, strOneLine
arOneLine = Split(strOneLine, ",")
zerlegt wird.
diese Prozedur funktioniert völlig problemlos mit meinen "normalen" Texten.
Jedoch tauchen bei anderen .txt Datei das Problem auf, das diese zwar im Editor gelistet angezeigt werden und am Ende jeder Zeile ein rechteckiges Steuerzeichen besitzen (welches sich hier auch nicht pasten lässt, da nur der Cursor eine Zeile tiefer rutscht)
Ich vermute es handelt sich dabei um Chr(10) oder Chr(13).
Ich habe dieses Zeichen als Grund für die Problem beim Einlesen via VBA ausgemacht, da dadurch der gesamte Text durch VBA nur als eine Zeile angesehen wird.
(Wenn ich das Zeichen entferne, ruscht die nachfolgende Zeile an das Ende der vorhergehende)
Meine Frage:
Wie kann ich VBA erklären, das mit dem Zeichen eine neue Zeile beginnt?
Ich hoffe mein Problem gut genug geschildert zu haben und bedanke mich im voraus für die Hilfen.
Gopla

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA > Text keinen Zeilenumbruch
18.01.2009 02:17:16
Roland
Hallo Gopla,
du müsstest das Übel an der Wurzel packen und bereits bei Erstellung der Textdatei sicherstellen, dass keine Steuerzeichen (z.B. Chr 10 oder 13) mit übernommen werden. Per VBA einen neuen Zeilenbeginn zu bestimmen ist mit deiner Routine nicht möglich, die liest eine Textdatei eben zeilenweise ein und teilt jede Zeile nach dem Separator "," in ein Array auf, da ist der Drops schon gelutscht. Um einen konkreten Workaround fabrizieren zu können müsste man schon einen Blick auf die Textdatei und deren gewünschte Aufteilung bekommen.
Gute Nacht aus Berlin von
Roland Hochhäuser
Anzeige
AW: VBA > Text keinen Zeilenumbruch
18.01.2009 02:28:56
Oberschlumpf
HI
Versuch mal mit einer Kopie einer deiner Text-Dateien das hier:

'trag für "DeinPfad:\deineTXTdatei.txt" das Richtige ein
Open "DeinPfad:\deineTXTdatei.txt" For Input As #1
'trag für "DeinPfad:\" das Richtige ein
Open "DeinPfad:\dummy.txt" For Output As #2
Do While Not EOF(1)
Line Input #1, inhalt
inhalt = Replace(inhalt, Chr(10), vbCrLf)
Print #2, inhalt
Loop
Close


Mit diesem Code wird...
1. eine vollständige Zeile aus deiner Txt-Datei eingelesen
2. im nächsten Schritt wird das Steuerzeichen Chr(10) gegen die Konstante vbCrLf (Kombination aus Wagenrücklauf und Zeilenvorschub) ausgetauscht
Aus 1 Zeile mit Chr(10) werden nun 2 Zeilen
3. jetzt wird der neue Inhalt (inkl. "richtigen Zeilenumbruch") in die Datei dummy.txt geshrieben.
4 gehe zu Schritt eins, bis jede Zeile aus DeineDatei.txt eingelesen wurde
Teste deine Prozedur jetzt mal mit der Datei dummy.txt.
Hilfts?
Ciao
Thorsten

Anzeige
AW: VBA > Text keinen Zeilenumbruch
18.01.2009 12:47:00
Gopla
Hallo Thorsten,
hilft sehr, macht wie es soll!
Kurze frage trotzdem:
Kann ich den
'Input #1'
sofort an den
'Line Input #intHandle, strOneLine
arOneLine = Split(strOneLine, ",")'
weitergeben, damit dieser dann ohne den 'dummytext.txt' neueinlesen zumüssten die Zerlegung startet?
(die betreffende .txt Datei ist 15mb+ groß und jede Zeitersparniss ist hilfreich)
Danke für die prima Hilfe!
Gopla
AW: VBA > Text keinen Zeilenumbruch
18.01.2009 13:49:51
Oberschlumpf
HI (heißt du wirklich Gopla?)
Versuch es mal mit diesem Code:

Sub zerlegen()
'deine Datei wird geöffnet
Open "DeinPfad:\deineTXTdatei.txt" For Input As #1
'deine Datei wird bis zum Dateiende eingelesen
Do While Not EOF(1)
'nacheinander werden vollständige Zeilen der Var Inhalt zugewiesen
Line Input #1, inhalt
'das Steuerelement Chr(10) wird durch vbCrLf ersetzt
inhalt = Replace(inhalt, Chr(10), vbCrLf)
'nun müssen erst mal die in Inhalt 2 Zeilen
'voneinander getrennt werden
arInhalt = Split(inhalt, vbCrLf)
'mit einer Schleife werden alle Teile
'von arInhalt verarbeitet
For endergebnis = 0 To UBound(arInhalt)
'arOneLine erhält jetzt nacheinander
'die Inhalte von arInhalt, wobei auch hier
'gleich wieder mit Komma geteilt wird
arOneLine = Split(arInhalt(endergebnis), ",")
'da nun arOneLine ja auch aus mind. 2 Teilen besteht,
'muss wieder mit einer Schleife gearbeitet werden
For durchlauf = 0 To UBound(arOneLine)
'hier dein Code, was mit arOneLine passieren soll
'du musst aber mit arOneLine(durchlauf) arbeiten,
'weil arOneLine ja aus mind. 2 Teilen besteht
'(getrennt durch das Komma), die mit der
'For durchlauf-Schleife abgearbeitet werden
Next
Next
Loop
Close
End Sub


Hilfts?
Ciao
Thorsten

Anzeige
Alles Prima - Danke!
18.01.2009 15:28:00
Gopla
Hallo Thorsten,
so machts Spass, klappt wie es soll und ich hab auch (dank der guten Beschreibung) Grundsätzliches dazu gelernt.
Danke recht herzlich
Gopla

332 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige