Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Importieren mehrerer txt Dateien

Importieren mehrerer txt Dateien
02.07.2014 13:12:48
Jochen Kobers

Hallo,
ich habe sehr viele .txt-Dateien in verschiedenen Unterordnern. Die .txt-Dateien haben alle den gleichen Namen, die Unterordner sind nach dem entsprechendem Datum benannt.
Ich möchte nun gerne den Inhalt aller .txt-Dateien in einem bestimmten Datumsbereich (den ich vorgeben können möchte) per Makro in ein Arbeitsblatt importieren. Also von Anfangsdatum bis Enddatum sollen alle .txt-Dateien in den Ordnern, die diesen Datumsbereich einschließen, importiert werden.
Die Inhalte der .txt-Dateien sollen untereinander und ohne Leerzeilen eingefügt werden. Reihenfolge ist relativ egal, da die Daten noch mit Formeln bearbeitet werden.
Es können auch die einzelnen Dateien in jeweils ein neues Tabellenblatt importiert werden, wichtig wäre dabei nur, dass die Namen der Tabellenblätter das Datum des Unterordners sind.
An sich ist eigentlich erstmal nur der Import aller Dateien das Wichtige. Das Verarbeiten klappt dann schon irgendwie.
Vielen Dank schon mal im Voraus für jede Hilfe.
MfG

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Importieren mehrerer txt Dateien
02.07.2014 14:44:26
Ralf P.
Hallo Jochen,
als Ansatz, evtl. musst du noch bisschen anpassen bei usedrange oder verzeichnisnamen

Sub TXTDateienZusammenKopieren()
''' kopiert viele TXT-Dateien in eine xls
Dim Awkb As Workbook
Dim ZielSht As Worksheet
Const Dateiname As String = "text.txt" 'fester dateiname
Dim Datei As String
Const Pfad As String = "X:\Documents\test\"
Dim Verzeichnis As String
Dim StartDatum As Variant
Dim EndDatum As Variant
Dim n As Long, m As Long, letzteZeile As Long
Set Awkb = ActiveWorkbook
Set ZielSht = Awkb.ActiveSheet
On Error Resume Next
StartDatum = InputBox("Importiere Dateien ab Datum: [TT.MM.JJ]")
EndDatum = InputBox("Importiere Dateien ab Datum: [TT.MM.JJ]")
If Not IsDate(StartDatum) Or Not IsDate(EndDatum) Then
MsgBox "kein Datum eingegeben! Abbruch!"
Exit Sub
End If
On Error GoTo 0
Err.Clear
'wie sind die verzeichnisnamen formatiert?
'JJJJMMTT ist hier am besten
StartDatum = CLng(Format(StartDatum, "YYYYMMDD"))
EndDatum = CLng(Format(EndDatum, "YYYYMMDD"))
ZielSht.Cells.Delete 'alle zellen werden gelöscht!!!
For n = StartDatum To EndDatum
Verzeichnis = Dir(Pfad & n, vbDirectory)
If Verzeichnis <> "" Then
Datei = Dir(Pfad & Verzeichnis & "\" & Dateiname)
If Datei <> "" Then
Workbooks.Open Pfad & Verzeichnis & "\" & Datei, ReadOnly:=True, Origin:=xlWindows
Windows.Arrange xlArrangeStyleVertical
ActiveWorkbook.ActiveSheet.UsedRange.Cells.Select
If ZielSht.UsedRange.Rows.Count = 1 Then
letzteZeile = 1
Else
letzteZeile = ZielSht.UsedRange.Rows.Count + 1
End If
'führende leerzeilen werden beim kopieren weggelassen
ActiveWorkbook.ActiveSheet.UsedRange.Cells.Copy ZielSht.Cells(letzteZeile, 1)
m = m + 1
Workbooks(Dateiname).Close False
Else
'keine datei im verzeichnis
End If
Else
'verzeichnis mit dem datum existiert nicht
End If
Next
MsgBox m & " Dateien wurden zusammengeführt."
End Sub
Rückmeldung erbeten!
Gruß
Ralf

Anzeige
AW: Importieren mehrerer txt Dateien
02.07.2014 15:25:13
Jochen Kobers
Wow, perfekt.
Genau, was ich gesucht habe. Vielen, vielen herzlichen Dank.
Zwei kleine Fragen hätte ich noch:
1. Aktuell ist das Datumsformat der Ordner YYYYMMTT im Code, die Ordner werden aber automatisch angelegt mit dem Format YYYY-MM-TT, also der Ordner von zB heute heißt "2014-07-02". Lässt sich das im Code irgendwie verbauen?
2. Lassen sich die zusammengeführten Dateien auch in das zweite Tabellenblatt ablegen? Ich möchte im ersten gerne einen Button zum Starten des Makros und einige Formeln hinterlegen.
MfG und nochmals Danke!

AW: Importieren mehrerer txt Dateien
03.07.2014 08:42:26
Ralf P.
Hallo Jochen,
ich kann verstehen, dass aller Anfang schwer ist.
Ich habe VBA gelernt, indem ich mir Beispiel-Code angeschaut und nachvollzogen habe.
Das Solltest du versuchen, denn bist du bald nicht mehr auf fremde Hilfe angewiesen.
Wenn du mit dem Cursor auf einem Wort stehst, mit dem du nichts anfangen kannst, hilft ein beherzter Druck auf die F1-Taste.
Zu 1.
Streiche:
Dim StartDatum As Variant
Dim EndDatum As Variant
StartDatum = CLng(Format(StartDatum, "YYYYMMDD"))
EndDatum = CLng(Format(EndDatum, "YYYYMMDD"))
Verzeichnis = Dir(Pfad & n, vbDirectory)
Setze:
Dim StartDatum As Date
Dim EndDatum As Date
Verzeichnis = Dir(Pfad & Format(n, "YYYY-MM-DD"), vbDirectory)
Zu 2. natürlich, du kannst auch ein neue Blatt erstellen
Streiche:
Set ZielSht = Awkb.ActiveSheet
Setze:
Set ZielSht = Awkb.worksheets(2) '2:=Index des Arbeitsblattes, auch "Tabelle2" möglich, oder wie das Ding eben heißt
Viel Spaß beim Nachvollziehen! :)
Gruß
Ralf

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige