dieses Forum ist bei allen Excel Problemen mein erster Anlaufpunkt, hier finde ich immer eine Lösung - nur diesmal nicht, deshalb nun mein erster Beitrag...
zur Situation:
Ich muss bestimmte Zelleninhalte aus xml-Dateien extrahieren. D.h. bisher werden sie mit VBA zeilenweise eingelesen, dann geprüft ob die Zeile das richtige Tag enthält und wenn ja der Wert übernommen.
Das funktioniert soweit ganz gut wenn die Datei vbCrLF als Zeilenendezeichen enthält.
Aber bei vbLF als Trenner wird die gesamte Datei als eine Zeile erkannt, weshalb dann nichts extrahiert wird. Und es dauert eben, bis dann endlich alles eingelesen ist. Jetzt sind die Dateien auch noch in der Größe explodiert und bei 1,6 GB möchte ich sie nicht falsch öffnen.
bisheriges Vorgehen:
Do While Not EOF(1)
Line Input #1, TextLine
Loop
Frage(n):Was ist das beste Vorgehen, um Dateien in der Größe zu verarbeiten? (Und bitte nicht mit "nimm ein besser geeignetes Programm" antworten.)
Natürlich kann ich über
Open "D:\MyDatei.txt" For Binary As #1
MyString = Input(LOF(1), #1)
CLOSE #1
MyString = Replace(MyString, Chr$(10), Chr$(13)&CHR$(10))
Open "D:\MyDatei.txt" For Output As #1
Write #1, MyString
CLOSE #1
den fehlenden CR einfügen, damit im Anschluss ein
Line Input #1, TextLine
funktioniert. Aber was ist, wenn ich Dateien mal mit vbLf und mal mit vbCrLf erhalte? Wie kann ich in kurzer Zeit feststellen, welche Art von Zeilenenden die Datei enthält? Kann ich z.B. nur die ersten 1000 ZeiCHen einlesen (ohne vorher die ganze Datei gelesen zu haben) und in dem String nach vbCrLf suchen?
Im Moment erscheint mir alles so schwierig/unmöglich, dass ich dazu tendiere, vor dem Einlesen eine msgbox auszugeben, in der darauf hingewiesen wird, dass die Dateien Windows-Zeilenenden aufweisen müssen und man sie nochmals mit z.B. emEditor, Textpad8 o.ä. öffnen und ggf. ändern soll.