lena123
Goto Top

komplette Textdatei in excel importieren

Hallo,

mein Problem ist folgendes: Ich habe eine Textdatei mit Zahlen und Text, diese sind schon mit Tabs getrennt. Wenn ich mit Strg+a den Inhalt markiere und dann in Excel kopiere, werden die Werte richtig in die Zellen eingefügt.

Mit Workbooks.OpenText funktioniert es auch, allerdings möchte ich die Textdatei nicht in einem neuen Workbook öffnen sondern in meinem aktuellen workbook in tabelle 2, und evtl. sogar in eine bestimmte Zeile.

Wenn ich das ganze mit "Open test.txt For Input As #1 ..." versuche, habe ich das Problem dass nur mein Text ausgelesen wird und die Zahlen nicht.

Ich möchte nicht jede Textdatei einzeln öffnen und den Inhalt per Hand kopieren, sondern das ganze automatisch starten.

Kann mir da jemand helfen?

Vielen Dank.
Gruß lena

Content-Key: 72581

Url: https://administrator.de/contentid/72581

Printed on: April 23, 2024 at 08:04 o'clock

Member: bastla
bastla Nov 02, 2007 at 17:33:51 (UTC)
Goto Top
Hallo lena123!

"Workbooks.OpenText" wäre ja nicht so übel - öffnen, alles markieren und kopieren, an der gewünschten Stelle in der anderen Mappe einfügen, "Workbook.Saved" auf True setzen und wieder schließen - lässt sich im Prinzip als Makro aufzeichnen und erfordert eigentlich nur eine Anpassung hinsichtlich der Zieladresse.

Alternativ dazu kannst Du das "FileSystemObject" verwenden, um den Text zeilenweise einzulesen, aufzuteilen und in die passenden Zellen eintragen zu lassen - Vorgangsweise etwa so (ungetestet):
...
'sDatei = Textdatei mit vollem Pfad  
'wTabelle = Zieltabelle  
'iRow = nächste freie Zeile der Zieltabelle  
...
Set fso = CreateObject("Scripting.FileSystemObject"  
Set oText = fso.OpenTextFile(sDatei, 1)
aGesamtText = Split(oText.ReadAll, vbCrLF) 'erzeugt ein Array - Inhalt: jeweils eine Textzeile  
oText.Close 'Textdatei wurde vollständig gelesen, daher schließen.  

'Als Alternative zum Einlesen in einem Rutsch etwa folgendes Konstrukt:  
'Do Until oText.AtEndOfStream / sLine = oText.ReadLine / ... siehe unten ... / Loop / oText.Close  

For Each sLine In aGesamtText 'Alle Zeilen durchgehen, ...  
    aLine = Split(sLine, vbTab) '... anhand der enthaltenen Tabs in Arrayfelder zerteilen und ...  
    With wTabelle
        .Range(.Cells(iRow, 1), .Cells(iRow, UBound(aLine) + 1)).Value = aLine '... als Array an passender Stelle in die Zieltabelle eintragen.  
    End With
    iRow = iRow + 1
Next

Nützlich (da relativ gut nach VBA übertragbar) für ähnliche Situationen könnte auch KB306022 sein.

Grüße
bastla
Member: lena123
lena123 Nov 03, 2007 at 14:08:18 (UTC)
Goto Top
hallo bastla,

das mit dem "Workbooks.OpenText", markieren und kopieren ist eine gute Idee, wenn man selbst davor sitzt kommt man manchmal nicht auf die einfachste Lösung;)
Den Code werde ich auch noch ausprobieren.

Vielen vielen Dank!

Gruß lena