Tabellen aus offenen Dateien sammeln

VBA und Makros
Codeschnipsel
Arbeitsblatt
Konsolidierung
Sammeln
Einsammeln
Excel

Ausgangslage - Was tut dieser Code-Schnipsel?

Ein immer wieder beliebtes Thema und eine andere Variante, diesmal aus geöffneten Dateien: Zusammenführen von Tabellen aus mehreren anderen Arbeitsmappen / Dateien in ein neues Tabellenblatt. Hierzu habe ich ein kleines Beispiel geschrieben. Einfach entsprechend anpassen und schon haben Sie eine Automatisierung Ihres Sammelvorganges realisiert.
Es werden alle Zeilen / Spalten des genutzten Bereiches der Tabellen ohne evtl. vorhandener Leerzeilen übernommen. Die Spalte 1 muss entsprechend gefüllt sein, da diese als Erkennungsmerkmal einer gefüllten Zeile dient (Sie können die Spalte aber im Quelltext ändern!).

Der Quelltext

Option Explicit
' Original-Quelltext unter: https://www.online-vba.de/tabellen-aus-offenen-dateien-sammeln
' Express-Hilfe für VBA unter https://www.online-vba.de/vba-expresshilfe
' Es gelten die Nutzungsbedingungen von Online-VBA.de

Public Sub OVBAde_TabellenAusMehrerenOffenenDateienEinlesen()
  Dim oTargetSheet As Object
  Dim oSoureWorkbook As Object
  Dim oTargetWorkbook As Object
  Dim lErgebnisZeile As Long
  Dim s As Long
  Dim z As Long
    
    Application.ScreenUpdating = False 'Das "Flackern" ausstellen
    
    'Schritt 1: Neues Arbeitsblatt für die Ergebnisse erstellen
    Set oTargetWorkbook = ActiveWorkbook
    Set oTargetSheet = ActiveWorkbook.Sheets.Add
    lErgebnisZeile = 1 'Ergebnisse eintragen ab Zeile 1
    
    'Schritt 2: Schleife über alle offenen Arbeitsmappen und Datenübertragung
    For Each oSoureWorkbook In Application.Workbooks
    
        If oTargetWorkbook.Name <> oSoureWorkbook.Name Then
        
            'Datenübertragung aller genutzten Zeilen und Spalten
            For z = 1 To oSoureWorkbook.Sheets("Tabelle1").UsedRange.Rows.Count
                'Keine Leerzeilen verarbeiten
                If Trim(CStr(oSoureWorkbook.Sheets("Tabelle1").Cells(z, 1).Value)) <> "" Then
                    For s = 1 To oSoureWorkbook.Sheets("Tabelle1").UsedRange.Columns.Count
                        'Spalte 1 - Dateinamen
                        oTargetSheet.Cells(lErgebnisZeile, 1).Value = oSoureWorkbook.Name
                        'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes "Tabelle1"
                        oTargetSheet.Cells(lErgebnisZeile, s + 1).Value = _
                            oSoureWorkbook.Sheets("Tabelle1").Cells(z, s).Value
                    Next s
                    lErgebnisZeile = lErgebnisZeile + 1
                End If
            Next z
            
        End If
        
    Next oSoureWorkbook
    
    Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
    
    'Variablen aufräumen
    Set oTargetSheet = Nothing
    Set oSoureWorkbook = Nothing
    Set oTargetWorkbook = Nothing
End Sub

Anmerkungen und Hinweise

Dieser Codeschnipsel wurde geschrieben von Marc Wershoven im Jahr 2013.
Die Nutzung erfolgt auf eigene Gefahr. Bitte denken Sie immer zuerst an eine ausreichende Datensicherung. Wir können keinen kostenlosen Support anbieten. Es gelten unsere Nutzungs­bedingungen.


So einfach läuft unsere VBA-Expresshilfe ab

1
Senden Sie uns Ihre Office-Datei oder Ihren VBA-Code (gerne anonymisiert) mit einer kurzen Problembeschreibung oder Ihrem Erweiterungswunsch per E-Mail.
2
Wir analysieren Ihr Anliegen schnell und schicken Ihnen umgehend (tagsüber meist innerhalb von 1-2 Stunden) ein Festpreis-Angebot.
3
Nach Ihrer Zustimmung lösen wir Ihr Problem (meist noch am gleichen Tag) oder setzen Ihre Erweiterung zuverlässig um – inklusive verständlicher Dokumentation der durchgeführten Maßnahmen.

Jetzt kontaktieren!







Mit einem * gekennzeichnete Eingabefelder sind Pflichtfelder.
Datenschutzhinweise zum Kontaktformular: Die von Ihnen im Kontaktformular bereitgestellten Daten werden ausschließlich zur Bearbeitung Ihrer Anfrage verwendet und nicht ohne Ihre Zustimmung an Dritte weitergegeben. Ihre Daten werden nur für den Zeitraum gespeichert, der zur Bearbeitung Ihrer Anfrage erforderlich ist. Weitere Hinweise zum Datenschutz finden Sie in unserer Datenschutzerklärung.
Hinweis: Für die vollständige Funktion dieser Website ist JavaScript erforderlich.
Bitte aktivieren Sie JavaScript in Ihrem Browser, um alle Inhalte und interaktiven Funktionen nutzen zu können.