Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bestimmte Zellen aus mehreren Dateien auslesen...

Bestimmte Zellen aus mehreren Dateien auslesen...
23.04.2015 08:35:21
TomTom
Guten Morgen :)
Hab das gerade schon mal geschrieben, aber irgendwie tauchte es nicht in der List auf, also, auf ein neues :D
Folgendes Problem :
Ich möchte aus ca 250 Excel Dokumenten aus einem bestimmten Blatt ( Blattname immer der gleich ) Zellen kopieren und in eine neue Datei einfügen um diese Auszuwerten ( deshalb am besten auch immer mit dem Dateinamen woher die Zahlen kommen ).
Bestimmt hat der ein oder andere hier schon etwas ähnliches dass er bereitstellen könnte, würde mich freuen.
Vielen dank.

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zellen aus mehreren Dateien auslesen...
23.04.2015 18:48:28
fcs
Hallo TomTom,
eine Suche in der RECHERCHE hätte bestimmt was verwertbares zum Vorschein gebracht.
Nachfolgen ein Beispiel.
Gruß
Franz
Sub alle_Dateien_Verzeichnis()
Dim dlg As FileDialog
Dim StatusCalc&
Dim varItem, Ext$, Datei$
Dim wkbNeu As Workbook, wkbQuelle As Workbook
Dim wksNeu As Worksheet, wksQuelle As Worksheet, LR&
On Error GoTo Fehler
'Makrobremsen lösen
With Application
.ScreenUpdating = False
.EnableEvents = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
Set dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen
If dlg.Show = True Then
'Neue Mappe Anlegen
Set wkbNeu = Application.Workbooks.Add(Template:=xlWBATWorksheet)
Set wksNeu = wkbNeu.Worksheets(1)
With wksNeu
'Spaltentitel
.Cells(1, 1) = "Verzeichnis:"
.Cells(3, 1) = "Dateiname"
.Cells(3, 2) = "Wert 1"
.Cells(3, 3) = "Wert 2"
.Cells(3, 4) = "Wert 3"
'ggf. noch Formate für Spalten vorgeben
End With
For Each varItem In dlg.SelectedItems 'Die Abfrage für den selektierten Eintrag
Ext = "*.xls*" 'Dateiextension ggf. anpassen
Datei = Dir(varItem & "\" & Ext)
Do While Datei  ""
If LCase(Datei) = LCase(ThisWorkbook.Name) Then GoTo NextDatei
Set wkbQuelle = Workbooks.Open(Filename:=varItem & "\" & Datei, _
ReadOnly:=True, UpdateLinks:=False)
'                Set wksQuelle = wkbQuelle.Worksheets(1) '1. Tabelle aus der gelesen wird
Set wksQuelle = wkbQuelle.Sheets("Tabelle1") 'Tabelle aus der gelesen wird
With wksNeu
LR = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile der Spalte+1
.Cells(LR, 1) = wkbQuelle.Name
'Werte aus Zellen auslesen
.Cells(LR, 2) = wksQuelle.Range("A1") 'hier hinten sind die Zielzellen
.Cells(LR, 3) = wksQuelle.Range("B2") '
.Cells(LR, 4) = wksQuelle.Range("B3") '
'u.s.w
End With
wkbQuelle.Close SaveChanges:=False
Set wkbQuelle = Nothing
NextDatei:
Datei = Dir() 'wählt die nächste Datei
Loop
wksNeu.Cells(1, 2) = varItem
Next
With wksNeu
.Columns.AutoFit
End With
End If
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case 1004
If Not wkbQuelle Is Nothing Then wkbQuelle.Close SaveChanges:=False
Resume NextDatei
Case -2147221080 'Automatisierungsfehler
If Not wkbQuelle Is Nothing Then wkbQuelle.Close SaveChanges:=False
Resume NextDatei
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, vbOKOnly, "Fehler-Makro"
End Select
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = StatusCalc
End With
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Zellen aus mehreren Excel-Dateien auslesen


Schritt-für-Schritt-Anleitung

Um bestimmte Zellen aus mehreren Excel-Dokumenten auszulesen, kannst Du das folgende VBA-Makro verwenden. Dieses Makro öffnet die Dateien in einem ausgewählten Verzeichnis, liest die Werte aus einem bestimmten Blatt und speichert diese in einer neuen Excel-Datei.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub alle_Dateien_Verzeichnis()
    Dim dlg As FileDialog
    Dim StatusCalc
    Dim varItem, Ext$, Datei$
    Dim wkbNeu As Workbook, wkbQuelle As Workbook
    Dim wksNeu As Worksheet, wksQuelle As Worksheet, LR
    On Error GoTo Fehler
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        StatusCalc = .Calculation
        .Calculation = xlCalculationManual
    End With
    Set dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen
    If dlg.Show = True Then
        Set wkbNeu = Application.Workbooks.Add(Template:=xlWBATWorksheet)
        Set wksNeu = wkbNeu.Worksheets(1)
        With wksNeu
            .Cells(1, 1) = "Verzeichnis:"
            .Cells(3, 1) = "Dateiname"
            .Cells(3, 2) = "Wert 1"
            .Cells(3, 3) = "Wert 2"
            .Cells(3, 4) = "Wert 3"
        End With
        For Each varItem In dlg.SelectedItems
            Ext = "*.xls*"
            Datei = Dir(varItem & "\" & Ext)
            Do While Datei <> ""
                If LCase(Datei) = LCase(ThisWorkbook.Name) Then GoTo NextDatei
                Set wkbQuelle = Workbooks.Open(Filename:=varItem & "\" & Datei, ReadOnly:=True, UpdateLinks:=False)
                Set wksQuelle = wkbQuelle.Sheets("Tabelle1") 'Tabelle aus der gelesen wird
                With wksNeu
                    LR = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                    .Cells(LR, 1) = wkbQuelle.Name
                    .Cells(LR, 2) = wksQuelle.Range("A1")
                    .Cells(LR, 3) = wksQuelle.Range("B2")
                    .Cells(LR, 4) = wksQuelle.Range("B3")
                End With
                wkbQuelle.Close SaveChanges:=False
                Set wkbQuelle = Nothing
NextDatei:
                Datei = Dir()
            Loop
            wksNeu.Cells(1, 2) = varItem
        Next
        With wksNeu
            .Columns.AutoFit
        End With
    End If
Fehler:
    With Err
        Select Case .Number
            Case 0
            Case 1004
                If Not wkbQuelle Is Nothing Then wkbQuelle.Close SaveChanges:=False
                Resume NextDatei
            Case -2147221080
                If Not wkbQuelle Is Nothing Then wkbQuelle.Close SaveChanges:=False
                Resume NextDatei
            Case Else
                MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, vbOKOnly, "Fehler-Makro"
        End Select
    End With
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = StatusCalc
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus: Drücke ALT + F8, wähle alle_Dateien_Verzeichnis und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler 1004: Dieser Fehler tritt auf, wenn das Makro versucht, auf eine Datei zuzugreifen, die nicht geöffnet werden kann. Stelle sicher, dass die Dateien im gewählten Verzeichnis nicht schreibgeschützt sind.

  • Automatisierungsfehler: Dieser Fehler kann auftreten, wenn die Excel-Anwendung nicht richtig reagiert. Überprüfe, ob andere Excel-Dateien geöffnet sind, und schließe sie, bevor Du das Makro ausführst.


Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch Power Query nutzen, um Daten aus mehreren Excel-Dateien zu konsolidieren:

  1. Gehe zu Daten > Abrufen und transformieren > Daten abrufen > Aus Datei > Aus Ordner.
  2. Wähle den Ordner, der die Excel-Dateien enthält.
  3. Wähle die gewünschten Dateien aus und lade die Daten in eine neue Arbeitsmappe.

Praktische Beispiele

Angenommen, Du hast mehrere Excel-Dateien, und in jeder Datei steht in Zelle A1 der Umsatz eines Produkts. Mit dem obigen VBA-Code kannst Du alle Umsätze in einer neuen Datei zusammenfassen.

Wenn Du die Werte in den Zellen A1, B2 und B3 auslesen möchtest, kannst Du die Zeilen im Makro anpassen, um andere Zellen zu referenzieren.


Tipps für Profis

  • Benutze Fehlerbehandlung im VBA-Code, um sicherzustellen, dass Dein Makro auch bei unerwarteten Fehlern robust bleibt.
  • Dokumentiere Deinen Code gut, um die Wartung zu erleichtern, insbesondere bei komplexeren Makros.
  • Experimentiere mit Array-Variablen, um die Leistung beim Verarbeiten großer Datenmengen zu verbessern.

FAQ: Häufige Fragen

1. Kann ich das Makro auch für andere Excel-Versionen verwenden?
Ja, dieses Makro sollte in den meisten Excel-Versionen ab 2010 funktionieren, die VBA unterstützen.

2. Was ist, wenn ich die Zellen A1, B2 und B3 in jeder Datei nicht finde?
Das Makro wird einen Fehler werfen. Du kannst das Makro anpassen, um sicherzustellen, dass die Zellen existieren, bevor Du auf sie zugreifst.

3. Wie kann ich den Blattnamen ändern?
Ändere die Zeile Set wksQuelle = wkbQuelle.Sheets("Tabelle1") und gib den neuen Blattnamen an.

4. Wie lange dauert es, 250 Dateien zu verarbeiten?
Die Verarbeitungszeit hängt von der Größe der Dateien und der Anzahl der Zellen ab, die ausgelesen werden. In der Regel sollte es jedoch nur wenige Minuten in Anspruch nehmen.

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