Supportnet Computer
Planet of Tech

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...

Antwort 3 von fukko

Zitat:
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 ??

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 !!

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.

Antwort 8 von steindesign

Super, nun funktionnierts einwandfrei !!

Herzlichen Dank für die tolle Erklärung.

Schon wieder was gelernt...

Liebe Grüsse, Rolf

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: