Supportnet / Forum / Anwendungen(Java,C++...)
txt File einlesen (Feld für Feld) in Excel über VBA
Frage
Nun übe ich seit Tagen am selben Problem...
Möchte ganz einfach ein txt File ins Excel einlesen und zwar nicht Zeile für Zeile, sondern Wert für Wert und so ins Excel übernehmen, dass auch dort die Werte (Zahlen und Text) sauber pro Feld nur ein Wert eingetragen wird.
Hier die Struktur des txt Files:
SVID EQUNR CLASS
------- ------------ ----------
1035566 558899 Allgemein
1035568 558666 Allgemein
1035569 558833 Allgemein
1035570 558855 Allgemein
Das kann doch nicht so schwierig sein.... ??
Antwort 1 von Teerbaby
Benutze das input #-Statement
input #filenumber, variable, variable, ...
Antwort 2 von steindesign
Hab ich eben schon und das Problem ist dass er mir immer die ganze Zeile ins Excel einliest und zwar ins erste Feld...
Habe auch den INPUT und den LINE INPUT Befehl probiert... ohne Erfolg...
Habe auch den INPUT und den LINE INPUT Befehl probiert... ohne Erfolg...
Antwort 3 von fukko
Zitat:
und zwar nicht Zeile für Zeile, sondern Wert für Wert
und zwar nicht Zeile für Zeile, sondern Wert für Wert
ist doch egal. lies zeilenweise in eine variable und splitte sie dann in werte. die split()-funktion kennt excel glaub ich seit version 2000.
Antwort 4 von steindesign
Also konkret habe ich folgendes:
Public Sub Makro5()
Dim Text1 As String
zz = 20
Open "H:\Daten\Excel\SW-Release.txt" For Input As #1
Do While Not EOF(1)
Input #1, Text1
Range("A" & zz).Value = Text1
zz = zz + 1
Loop
Close #1
End Sub
Wie kann ich nun erreichen, dass ich ins nächste Feld im Excel (B 20 ) z.B. den zweiten Wert einlesen kann ??
Public Sub Makro5()
Dim Text1 As String
zz = 20
Open "H:\Daten\Excel\SW-Release.txt" For Input As #1
Do While Not EOF(1)
Input #1, Text1
Range("A" & zz).Value = Text1
zz = zz + 1
Loop
Close #1
End Sub
Wie kann ich nun erreichen, dass ich ins nächste Feld im Excel (B 20 ) z.B. den zweiten Wert einlesen kann ??
Antwort 5 von fukko
probier mal so:
Open "H:\Daten\Excel\SW-Release.txt" For Input As #1
n = 20
While Not EOF(1)
Line Input #1, z
a = Split(z, Space(1))
For i = 0 To UBound(a)
Cells(n, i + 1) = a(i)
Next
n = n + 1
Wend
Close #1
Antwort 6 von steindesign
He fukko das funzt schon ziemlich prächtig !
Aber kannst Du mir die einzelnen Zeilen (a = split, und UBound ? und Cells ..)
doch noch ein bisschen näher erklären...
Dann hätte ich noch die Frage wie kann ich steuern, dass nicht nach einem "space" getrennt wird, sondern nach einem Tab ??
Danke vorerst mal tausendmal !!
Aber kannst Du mir die einzelnen Zeilen (a = split, und UBound ? und Cells ..)
doch noch ein bisschen näher erklären...
Dann hätte ich noch die Frage wie kann ich steuern, dass nicht nach einem "space" getrennt wird, sondern nach einem Tab ??
Danke vorerst mal tausendmal !!
Antwort 7 von fukko
die funktion split() teilt einen string nach dem angegebenen trennzeichen und gibt das ergebnis als array zurück. im nullten feld des arrays steht die erste teilzeichenkette, die anderen kommen dahinter, jede in einem anderen arrayfeld. ubound() gibt die höchste indexzahl eines arrays zurück.
beispiel:
string="1|2|3"
a=split(string,"|")
ergebnis ist der array a mit folgendem inhalt:
a(0)="1"
a(1)="2"
a(2)="3"
ubound(a) gibt als ergebnis 2 zurück, das heisst, der array besitzt 3 felder (von feld0 bis feld2)
mit cells(zeile,spalte) kann man einzelne excelzellen auslesen oder füllen. zeile und spalte geben die gewünschte zelle an (wie in einem koordinatensystem). cells(1,1) steht für die linke obere zelle (=a1). b1 ist cells(1,2) und a2 ist cells(2,1).
für tab ersetze space(1) durch chr(9). tab ist das ascii-zeichen nummer 9.
beispiel:
string="1|2|3"
a=split(string,"|")
ergebnis ist der array a mit folgendem inhalt:
a(0)="1"
a(1)="2"
a(2)="3"
ubound(a) gibt als ergebnis 2 zurück, das heisst, der array besitzt 3 felder (von feld0 bis feld2)
mit cells(zeile,spalte) kann man einzelne excelzellen auslesen oder füllen. zeile und spalte geben die gewünschte zelle an (wie in einem koordinatensystem). cells(1,1) steht für die linke obere zelle (=a1). b1 ist cells(1,2) und a2 ist cells(2,1).
für tab ersetze space(1) durch chr(9). tab ist das ascii-zeichen nummer 9.
Antwort 8 von steindesign
Super, nun funktionnierts einwandfrei !!
Herzlichen Dank für die tolle Erklärung.
Schon wieder was gelernt...
Liebe Grüsse, Rolf
Herzlichen Dank für die tolle Erklärung.
Schon wieder was gelernt...
Liebe Grüsse, Rolf