Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mehrere .txt dateien per vba importieren

mehrere .txt dateien per vba importieren
12.07.2007 10:33:00
max
Hallo zusammen!
ich habe folgendes Problem:
ich möchte per VBA mehrere .txt dateien aus einem Verzeichnis nacheinander in Excel importieren.
Das ganze prozedere sollte ungefähr so aussehen:
erste Datei importieren, diese daten werden mit vba Code, der bereits besteht bearbeitet. Dann soll die nächste Datei (es gibt eine Nummerierung im Dateinamen)importiert werden und bewarbeitet werden.
Gibt es vielleicht einen bestehenden Code zum Import mehrerer Dateinen, in den ich meinen Bearbeitungscode einbinden kann?
Danke schon mal!

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere .txt dateien per vba importieren
12.07.2007 11:45:00
Chaos

Sub suchen()
Dim n As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Add
n = ActiveWorkbook.Name
With Application.FileSearch
On Error Resume Next
.NewSearch
.LookIn = "C:\..." ' Hier der Pfad der Textdateien
.Filename = "*" & ".txt"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
Dateipfad = .FoundFiles(Dateien)
If DateiName  ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
' Hier dein Makro zum Bearbeiten
ActiveWorkbook.Close
End If
Next
End If
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


Das öffnet alle TextDateien im angegebenen Verzeichnis, allerdings nicht in Reihenfolge 1,2 ..., sondern wie sie im Verzeichnis abgelegt sind.
weiß nicht, ob dir das weiterhilft, evtl. etwas modifizeren.
Gruß
Chaos

Anzeige
AW: mehrere .txt dateien per vba importieren
12.07.2007 12:39:16
Chaos
servus,
ich hab das mal mit dem Makrorecorder aufgezeichnet und etwas modifiziert:

Sub Makro3()
Dim n As Integer
For n = 1 To 2 Step 1
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\stadter\Desktop\hallo\dkjghihädkJ" & n & ".txt", _
Destination:=Range("A65536").End(xlUp).Offset(1, 0))
.Name = "dkjghihädkJ"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
'Hier der Bearbeitungscode
End With
Next
End Sub


Damit kommst du, meine ich weiter, als mit dem ersten Makro, wenn alle Dateien den gleichen namen haben (z.B.: text.txt, text1.txt, text2.txt)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\stadter\Desktop\hallo\dkjghihädkJ" & n & ".txt", _
Destination:=Range("A65536").End(xlUp).Offset(1, 0))
dieser Ausdruck öffnet die Dateien n ist die Laufvariable und fügt sie in die erste freie zelle nach spalte A ein.
Gruß
chaos

Anzeige
AW: mehrere .txt dateien per vba importieren
12.07.2007 13:32:00
max
Damit kann ich erstmal arbeiten.
Dankeschön!

AW: mehrere .txt dateien per vba importieren
12.07.2007 15:27:36
max
Prinzipiell wäre der Code eine Lösung der Aufgabenstellung.
Ein Problem sind die Dateinamen der textdateien, die nicht einfach nummeriert sind, sondern in denen datum und uhrzeit enthalten sind(Format:text_jjjj-mm-tt_hh-mm-ss.txt) In einem Ordner sind immer die Dateien eines Monats, d.h. ich könnte die Tag(tt)-Ziffer als Variable n benutzen, da es auch nur ein File pro Tag gibt. Leider sind die Uhrzeiten hinten bei den Files jeden Tag unterschiedlich. gäbs dafür ne lösung in dieser art:
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\stadter\Desktop\hallo\text_jjjj-mm-" & n & "*.txt", _
Destination:=Range("A65536").End(xlUp).Offset(1, 0))
also irgendwie mit Sternchen die Uhrzeit nicht berücksichtigen?

Anzeige
AW: mehrere .txt dateien per vba importieren
12.07.2007 19:15:46
Chaos
Servus,
schaut eher schlecht aus und mir fällt jetzt gerade nichts dazu ein.
Gruß
Chaos

AW: mehrere .txt dateien per vba importieren
13.07.2007 10:29:00
max
Jetzt hab ich mir ein Rename-Tool runtergeladen und pass den Dateinamen entsprechend an.
Danke trotzdem.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrere .txt Dateien per VBA in Excel importieren


Schritt-für-Schritt-Anleitung

Um mehrere .txt Dateien in Excel zu importieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code öffnet die Dateien in einem bestimmten Verzeichnis und bearbeitet sie gemäß Deinem bestehenden Makro.

Sub mehrere_txt_dateien_importieren()
    Dim n As String
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Workbooks.Add
    n = ActiveWorkbook.Name
    With Application.FileSearch
        On Error Resume Next
        .NewSearch
        .LookIn = "C:\Pfad\zu\deinen\Textdateien" ' Hier den Pfad zu den .txt Dateien anpassen
        .Filename = "*.txt"
        If .Execute() > 0 Then
            For i = 1 To .FoundFiles.Count
                Workbooks.Open Filename:=.FoundFiles(i)
                ' Hier deinen Bearbeitungscode einfügen
                ActiveWorkbook.Close
            Next i
        End If
    End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Dieser Code sucht nach allen .txt Dateien im angegebenen Verzeichnis. Stelle sicher, dass Du den Pfad zu den Dateien korrekt angibst.


Häufige Fehler und Lösungen

  1. Fehler beim Öffnen der Dateien: Überprüfe den angegebenen Pfad. Der Pfad muss genau stimmen, einschließlich der richtigen Schreibweise.

  2. Dateien werden nicht in der richtigen Reihenfolge geöffnet: Der Code öffnet die Dateien, wie sie im Verzeichnis abgelegt sind. Eine Sortierung nach Dateinamen muss ggf. manuell implementiert werden.

  3. VBA-Fehler bei der Ausführung: Stelle sicher, dass der VBA-Editor aktiviert ist und Du die Makros entsprechend den Excel-Sicherheitseinstellungen zulässt.


Alternative Methoden

Eine alternative Methode ist die Verwendung von QueryTables, um mehrere txt Dateien zusammenzufügen. Hier ein Beispiel:

Sub mehrere_txt_dateien_zusammenfuegen()
    Dim n As Integer
    For n = 1 To 10 ' Anzahl der Dateien anpassen
        With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Pfad\zu\deinen\Textdateien\text_" & n & ".txt", _
        Destination:=Range("A65536").End(xlUp).Offset(1, 0))
            .FieldNames = True
            .Refresh BackgroundQuery:=False
            ' Hier der Bearbeitungscode
        End With
    Next n
End Sub

Hierbei wird angenommen, dass die Dateinamen nach einem bestimmten Muster benannt sind, z.B. text_1.txt, text_2.txt usw.


Praktische Beispiele

Wenn Du beispielsweise mehrere txt Dateien importieren möchtest, deren Namen das Datum enthalten, könntest Du den Code wie folgt anpassen:

Sub importiere_txt_dateien_mit_datum()
    Dim n As Integer
    For n = 1 To 31 ' Nur für den Monat
        With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Pfad\zu\deinen\Textdateien\text_2023-04-" & n & "*.txt", _
        Destination:=Range("A65536").End(xlUp).Offset(1, 0))
            .FieldNames = True
            .Refresh BackgroundQuery:=False
            ' Hier der Bearbeitungscode
        End With
    Next n
End Sub

Hier wird die Tageszahl als Variable verwendet, um die entsprechenden Dateien zu importieren.


Tipps für Profis

  • Verwende Error Handling: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler zu vermeiden.

  • Benutze die Dir-Funktion: Um eine Liste von Dateien in einem Verzeichnis zu erhalten, kann die Dir-Funktion hilfreich sein, insbesondere wenn die Dateinamen variieren.

  • Makros optimieren: Teste den Code mit einer kleinen Anzahl von Dateien, bevor Du ihn auf mehr Daten anwendest, um die Performance zu optimieren.


FAQ: Häufige Fragen

1. Wie kann ich mehrere txt Dateien in Excel importieren, wenn sie nicht nummeriert sind?
Du kannst den Code so anpassen, dass er nach einem bestimmten Muster sucht oder einfach alle Dateien im Verzeichnis öffnet.

2. Was mache ich, wenn meine Dateinamen unterschiedlich sind?
In diesem Fall solltest Du eine Funktion integrieren, die die Dateinamen vor dem Import vergleicht, oder eine andere Logik implementieren, um die relevanten Dateien auszuwählen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige