Hallo Mike,
der folgende Code überspringt sowohl leere Zeilen als auch leere Dateien, zudem erhalten die Tabellenblätter
den Namen der jeweiligen Datei
Sub Import()
Dim sh As Worksheet
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, f, temp
Dim noEntry As Boolean
Set fs = CreateObject("Scripting.FileSystemObject")
D = Dir("C:\VBA\Wolken\C*.txt") 'Die auszulesenden Dateien fangen alle mit "C" an
i = 1
Do While D <> ""
If i > Worksheets.Count Then Worksheets.Add after:=Worksheets(i - 1) 'Worksheet anfügen, wenn alle gefüllt sind
Set sh = Worksheets(i) 'Nächstes Tabellenblatt auswählen
sh.Cells.ClearContents 'Alle Einträge im Worksheet löschen
X = 1
noEntry = True
Set f = fs.OpenTextFile("C:\VBA\Wolken\" & D, ForReading, TristateFalse)
Do While f.AtEndOfStream <> True 'solange das Dateiende nicht erreicht ist
temp = f.ReadLine 'die nächste Zeile aus der Textdatei wird in die Variable temp abgelegt
If IsLeer(temp) = False Then 'Zeile verarbeiten
sh.Cells(X, 1) = Replace(temp, vbTab, ",") 'Tabulatoren in der Zeile werden durch Kommata ersetzt und in der Tabellenzelle Zeile x, Spalte A abelegt
sh.Cells(X, 1).TextToColumns Destination:=sh.Cells(X, 1), Comma:=True 'Text in Spalten
X = X + 1
noEntry = False
End If
Loop
sh.UsedRange.Columns.AutoFit 'Optimale Spaltenbreite setzen
sh.Name = Replace(D, ".txt", "")
D = Dir
If noEntry = False Then i = i + 1
Loop
End Sub
Public Function IsLeer(wert) As Boolean
IsLeer = IsNull(wert) Or IsEmpty(wert) Or wert = ""
End Function
Gruß und ein schönes Wochenende
Lutz
|