Mit nachfolgendem Code liest Excel Textdateien aus einem Verzeichnis in ein Excel-Arbeitsblatt.
Dabei wird die Textdatei Zeile für Zeile ausgelesen und in Kolonnen wiedergegeben. Jede weitere Textdatei wird in einer neuen Zeile des Arbeitsblattes wiedergegeben.
Sub importtxt()
Set ws = ThisWorkbook.Sheets(1)
Set fso = CreateObject("Scripting.FileSystemObject")
x = ws.UsedRange.Rows.Count + 1
Folder = Dir("C:\VBA\*.txt")
Application.ScreenUpdating = False
Do While Folder ""
t = Split(fso.OpenTextFile("C:\VBA\" & Folder).readall, vbNewLine)
ws.Cells(x, 1).Resize(1, UBound(t) + 1).Value = t
x = x + 1
Folder = Dir
Loop
ws.UsedRange.Columns.AutoFit
Application.ScreenUpdating = True
End Sub
Soweit funktioniert das auch. Allerdings - Ordnung muss sein - wurden im Verzeichnis, zum Teil, Unterverzeichnisse angelegt, mit vielleicht eigenen Unterverzeichnissen. Da funktioniert der Code nicht mehr, da er ja nur im Verzeichnis "VBA" sucht. Wie könnte man dies umschreiben, damit man auch Unterverzeichnisse auf Textdateien durchsucht und importiert?
Ganz untätig war ich allerdings nicht. Folgenden Code habe ich mal gefunden (Vielleicht als Hilfestellung?). Mit diesem kann man Unterverzeichnisse durchsuchen, der gibt dann allerdings nur die Dateipfade wieder. Das will ja ich nicht, ich will ja die Daten importieren. Ich versuchte also beide irgendwie zu kombinieren...ohne Erfolg, da es meinen momentanen VBA-Horizont übersteigt. Hätte da jemand eine Idee? Über jede Hilfe wäre ich sehr dankbar!
Option Explicit
Public objFSO As Object
Sub TestIt()
Set objFSO = CreateObject("Scripting.FileSystemObject")
GetFiles ("C:\VBA")
End Sub
Sub GetFiles(ByVal strDirectory)
Dim objFolder As Folder
Dim objFile As File
Set objFolder = objFSO.GetFolder(strDirectory)
For Each objFile In objFolder.Files
Debug.Print objFile.Path
Next
For Each objFolder In objFolder.SubFolders
GetFiles objFolder.Path
Next
End Sub
Mit besten Grüßen
Michael