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

Forumthread: Excel Dateien aus Ordner auslesen ..

Excel Dateien aus Ordner auslesen ..
04.05.2007 22:40:00
Stefan
Hi zusammen,
ich bin Außendiensttechniker und wollte statistisch mal erfassen wie viele Kilometer ich bisher gefahren bin.
Ich habe einen Windows Ordner in dem alle meine Spesenabrechnungen sind (alles Excel Arbeitsmappen mit einer Tabelle) in der Tabelle ist Spalte K von 7 bis 17 mit den Kilometern gefüllt.
Ich bin also auf der Suche nach einer Funktion die mir die Dateinamen aus dem Ordner holt und wie folgt in ein Excel Tabelle ausgibt:
Spalte A - Dateiname
Spalte B - gefahrene Kilometer (Summe aus der Tabelle K7 bis K17 aus Dateiname)
Wenn ich das händisch machen sollte würde ich dafür zu lange brauchen.
Und da ich mich mit VBA nicht so gut auskenne hoffe ich ganz fest auf eure Hilfe.
Danke im voraus!!!!
Gruß Stefan

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel Dateien aus Ordner auslesen ..
04.05.2007 23:25:11
Josef
Hallo Stefan,
probier mal diesen Code. (Kommentare beachten!)
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Daten_Lesen()
Dim strPath As String, strFile As String, strTabName As String
Dim lngR As Long

strPath = "F:\Temp\km\" 'Verzeichnis anpassen!

strTabName = "Tabelle1" 'Name der Tabellenblätter anpassen!

strFile = Dir(strPath & "*.xls")

lngR = 1

With ThisWorkbook.Sheets("Tabelle1") 'Name der Ausgabetabelle anpassen!
    
    .Range("A2:B" & Rows.Count).ClearContents
    
    Do Until strFile = ""
        lngR = lngR + 1
        .Cells(lngR, 1) = strFile
        .Cells(lngR, 2).Formula = "=SUM('" & strPath & "[" & strFile & "]" & _
            strTabName & "'!$K$7:$K$17)"
        .Cells(lngR, 2) = .Cells(lngR, 2).Value
        strFile = Dir
    Loop
    
End With

End Sub

Gruß Sepp

Anzeige
AW: Excel Dateien aus Ordner auslesen ..
05.05.2007 00:01:23
Stefan
Hi Sebb,
genau was ich gesucht habe funktioniert perfekt besten Dank!!!
Gruß Stefan

AW: Excel Dateien aus Ordner auslesen ..
04.05.2007 23:44:46
fcs
Hallo Stefan,
folgendes Makrobeispiel erstellt eine neue Abeitsmappe und liest dann die Dateien im Verzeichnis aus.

Sub Import_km()
'Fügt aus allen Dateien des Ordners die Summe aus dem Zellbereich in eine Zelle ein
Dim wbKM As Workbook, wb As Workbook
Dim wksKM As Worksheet
Dim Verzeichnis As Variant, ZellBereich$
Dim i As Integer, ZeileKM As Long
'Neue Arbeitsmappe mit 1 Tabelle anlegen
Set wbKM = Workbooks.Add(Template:=xlWBATWorksheet)
Set wksKM = wbKM.Worksheets(1)
ZeileKM = 1 'Zeile für Spaltentitel in der Tabelle in der Daten eingetragen werden
Verzeichnis = "C:\Test\Daten" 'Hier Verzeichnis anpassen
ZellBereich$ = "K7:K17" 'Zellbereich der summiert wird
'zur Beschleunigung der Codeausführung
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Dateien im Verzeichnis Suchen und abarbeiten
With Application.FileSearch
.NewSearch
.LookIn = Verzeichnis
.FileName = "*.xls"
.SearchSubFolders = False
.MatchTextExactly = True
wksKM.Cells(ZeileKM, 1) = "Dateiname"
wksKM.Cells(ZeileKM, 2) = "Summe-km"
wksKM.Columns(2).NumberFormat = "#,##0" ' Beispiel(deutsch): 2.000
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Application.StatusBar = "Datei " & i & " von " & .FoundFiles.Count & " wird bearbeitet"
'Nächste freie Zeile im Blatt in Spalte A ermitteln
ZeileKM = wksKM.Cells(wksKM.Rows.Count, 1).End(xlUp).Row + 1
Set wb = Workbooks.Open(FileName:=.FoundFiles(i), ReadOnly:=True)
wksKM.Cells(ZeileKM, 1).Value = wb.Name ' oder wb.FullName, wenn mit Verzeichnis
wksKM.Cells(ZeileKM, 2).Value = _
Application.WorksheetFunction.Sum(wb.Worksheets(1).Range(ZellBereich$))
wb.Close savechanges:=False
Next i
Application.StatusBar = False
End If
End With
'Spaltenbreite optimal einstellen
wksKM.Columns.AutoFit
'Beschleunigungseinstellungen zueücksetzen
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Dialogs(xlDialogSaveAs).Show
End Sub


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel Dateien aus Ordner auslesen


Schritt-für-Schritt-Anleitung

Um mit VBA alle Dateien eines Ordners auszulesen und bestimmte Daten daraus zu extrahieren, kannst du folgenden Code verwenden. Dieser Code listet die Dateinamen und summiert die Kilometer aus der angegebenen Excel-Tabelle.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Kopiere und füge den folgenden Code ein:
Sub Daten_Lesen()
    Dim strPath As String, strFile As String, strTabName As String
    Dim lngR As Long

    strPath = "F:\Temp\km\" 'Verzeichnis anpassen!
    strTabName = "Tabelle1" 'Name der Tabellenblätter anpassen!

    strFile = Dir(strPath & "*.xls")
    lngR = 1

    With ThisWorkbook.Sheets("Tabelle1") 'Name der Ausgabetabelle anpassen!
        .Range("A2:B" & Rows.Count).ClearContents

        Do Until strFile = ""
            lngR = lngR + 1
            .Cells(lngR, 1) = strFile
            .Cells(lngR, 2).Formula = "=SUM('" & strPath & "[" & strFile & "]" & strTabName & "'!$K$7:$K$17)"
            .Cells(lngR, 2) = .Cells(lngR, 2).Value
            strFile = Dir
        Loop
    End With
End Sub
  1. Passe die Variablen strPath und strTabName an deinen Bedarf an.
  2. Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehler: „Datei nicht gefunden“

    • Überprüfe den angegebenen Pfad in strPath. Stelle sicher, dass der Pfad korrekt ist und die Dateien vorhanden sind.
  • Fehler: „Keine Daten in den Zellen“

    • Kontrolliere, ob die Tabelle tatsächlich Daten in den Zellen K7 bis K17 hat.
  • Lösung: Excel-Dateien werden nicht erkannt

    • Stelle sicher, dass die Dateiendungen korrekt sind und die Dateien nicht beschädigt sind.

Alternative Methoden

Falls du VBA nicht verwenden möchtest, kannst du auch mit Power Query in Excel die Daten aus einem Ordner auslesen:

  1. Gehe zu Daten > Daten abrufen > Aus Datei > Aus Ordner.
  2. Wähle den Zielordner aus und klicke auf OK.
  3. Bearbeite die Abfrage, um nur die benötigten Spalten zu behalten und die notwendigen Berechnungen durchzuführen.

Praktische Beispiele

Ein weiteres Beispiel könnte so aussehen, dass du alle Dateinamen in einer Liste aufzeigen möchtest:

Sub Auflisten_Dateien()
    Dim strPath As String, strFile As String
    Dim lngR As Long

    strPath = "C:\Dein\Ordner\Pfad\" 'Verzeichnis anpassen!
    strFile = Dir(strPath & "*.xls")
    lngR = 1

    With ThisWorkbook.Sheets("Liste") 'Name der Ausgabetabelle anpassen!
        .Cells.ClearContents

        Do Until strFile = ""
            .Cells(lngR, 1) = strFile
            lngR = lngR + 1
            strFile = Dir
        Loop
    End With
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Performance zu verbessern, wenn du viele Dateien durchläufst.
  • Nutze Error Handling in deinem VBA-Code, um auf Fehler besser reagieren zu können.
  • Teste deine Makros stets in einer Testumgebung, um unbeabsichtigte Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Summe aus einem anderen Tabellenblatt lesen? Du kannst den Tabellennamen in der Formel anpassen, indem du die entsprechende Zeile im VBA-Code änderst.

2. Kann ich auch Dateien mit einer anderen Endung auslesen? Ja, ändere einfach *.xls zu *.xlsx oder einer anderen gewünschten Endung im Dir-Befehl.

3. Was mache ich, wenn ich keine VBA-Kenntnisse habe? Nutze die oben genannten Alternativen wie Power Query, um Daten aus einem Ordner auszulesen, ohne VBA verwenden zu müssen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige