Feedback:
Ich habe das Problem inzwischen gelöst, nachdem ich noch ein anderes festgestellt hatte. Meine Datei hatte keine üblichen Zeilenschaltungen, weshalb in VBA die ganze Datei erst mal als eine große Zeile erkannt wurde. Beim Googlen bin ich dann auf folgendes gestoßen:
http://www.herber.de/forum/archiv/1040to1044/1041037_VBA_Text_keinen_Zeilenumbruch.html
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
Die äußere do while Schleife habe ich rausgeworfen, da unnötig.
In der innersten For-Next-Schleife habe ich jetzt die einzelnen durch Semikolon getrennten Zeilenabschnitte. Die muss ich nur
überprüfen ob es der 4 bis 14 Zeilenabschnitt ist. Falls ja, werden deren Inhalte verkettet.
Dieletztendliche Aufgabe ist es dann noch, die Abschnitte in eine Access-Tabelle zu importieren.
im Abschnitt Verwendungszwecke wird dann einfach der zusammengekettete String eingefügt. Das klappt auch schon einwandfrei.
Werde jetzt noch eine Funktion einfügen, die überprüft, ob ein Datensatz bereits in der Datenbank vorhanden ist. Nicht, dass ich
versehentlich mal etwas doppelt importiere. Eventuell mache ich aus der IF-Kette noch ein Case, weil es sauberer aussieht.
|