Supportnet / Forum / Tabellenkalkulation
mehrere TXT-Dateinen nach Excel importieren
Frage
Moinsen,
ich habe ein Problem, dass mich an meine Grenzen führt.
Ich muss zur weiteren Verwendung aus einer Software Datensätze exportieren. Diese exportierten Datensätze liegen dann im Format *.txt vor und werden in Excel zusammengefasst.
D.h. ich muss mehrere TXT-Dateien nach Excel importieren.
Diese einzelnen Dateien werden jeweils einem eigenen Tabellenblatt zugewiesen.
Z.Zt. mache ich das auf dem berühmten manuellen Wege und erzeuge eine entsprechende Anzahl von Tabellenblättern, benenne sie entsprechend und importiere die entsprechenden Datensätze schön zu Fuss.
Da ich das nun öfter machen darf und es sich um eine unterschiedliche Anzahl von Datensätzen (in der Regel zwischen 5 und 30 txt-Dateien) handelt, möchte ich das automatisieren.
Ich habe keine Ahnung wo ich anfangen soll und wie das geht.
Konvertiungsparameter (über den Textkonvertierungsassitenten) sind:
ursprünglicher Dateityp: getrennt
Import beginnend in Zeile 6
Dateiursprung 1250 Mitteleuropäisch (Windows)
Trennzeichen Semikolon
alles andere bleibt unverändert
Die TXT-Dateien werden immer aus dem gleichen Ordner importiert.
Die Ausgangssoftware vergibt immer gleich aufgebaute Dateinamen, die für die Benennung der Tabellenblätter eine Rolle spielen.
Der Tabellenblattname ergibt sich immer aus den letzten Stellen des Dateinamens = Datum des Datensatzes bzw. Datumsbereich
Beispiel:
C_Müller_Peter_2008-02-20_15-05-13_3722_A1_20080115-20080220.txt
C_Müller_Peter_2008-02-20_15-05-13_3722_D1_20080219.txt
C_Müller_Peter_2008-02-20_15-05-13_3722_D1_20080216.txt
C_Müller_Peter_2008-02-20_15-05-13_3722_D1_20080215.txt
oder mit zwei oder mehr Vornamen
C_Meier_Klaus_Bärbel_2008-02-20_15-05-13_3722_A1_20080115-20080220.txt
C_Meier_Klaus_Bärbel_2008-02-20_15-05-13_3722_D1_20080219.txt
Wer aus dieser Gemeinde kann mir helfen?
Antwort 1 von gast123
hi all
ein beispiel
gruss gast123
ein beispiel
gruss gast123
Sub TxtFilesListen()
Call EventsOff
Dim Dateien As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
.LookIn = "C:\Temp\"
.SearchSubFolders = False
.Filename = "*.txt"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
ThisWorkbook.Worksheets.Add , ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = Mid(DateiName, 1, Len(DateiName) - 4)
With ThisWorkbook.Sheets(Mid(DateiName, 1, Len(DateiName) - 4)).QueryTables.Add(Connection:="TEXT;" & "C:\Temp\" & Mid(DateiName, 1, Len(DateiName)), Destination:=Range("A1"))
.Name = "ob1201_2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.Refresh BackgroundQuery:=False
End With
Next Dateien
End If
End With
ThisWorkbook.Worksheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Delete
Call EventsOn
End SubPublic Sub EventsOff()
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End SubPublic Sub EventsOn()
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End SubAntwort 2 von Krischan02
Hallo gast123,
ich habe deine Vorlage in Excel eingegeben, leider wirft er eine Fehlermeldung raus.
Und zwar in dieser Zeile, was kann da falsch sein?
With ThisWorkbook.Sheets(Mid(DateiName, 1, Len(DateiName) - 4)).QueryTables.Add(Connection:="TEXT;" & "C:\Temp\" & Mid(DateiName, 1, Len(DateiName)), Destination:=Range("A1"))
und hier zeigt es auch was falsches an:
ThisWorkbook.Worksheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Delete
???
ich habe deine Vorlage in Excel eingegeben, leider wirft er eine Fehlermeldung raus.
Und zwar in dieser Zeile, was kann da falsch sein?
With ThisWorkbook.Sheets(Mid(DateiName, 1, Len(DateiName) - 4)).QueryTables.Add(Connection:="TEXT;" & "C:\Temp\" & Mid(DateiName, 1, Len(DateiName)), Destination:=Range("A1"))
und hier zeigt es auch was falsches an:
ThisWorkbook.Worksheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Delete
???
Antwort 3 von gast123
hi all
in der ersten angegebenen zeile,an den pfad gedacht ?
in der zweiten angegebenen zeile wird vorausgesetzt das
Tabelle1/Tabelle2/Tabelle3 vorhanden sind,diese zeile koennte auch geloescht werden bei nicht bedarf
excel 7 ausgeschlossen
gruss gast123
in der ersten angegebenen zeile,an den pfad gedacht ?
in der zweiten angegebenen zeile wird vorausgesetzt das
Tabelle1/Tabelle2/Tabelle3 vorhanden sind,diese zeile koennte auch geloescht werden bei nicht bedarf
excel 7 ausgeschlossen
gruss gast123

