Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Inhalte aus mehreren Dateien zusammenfassen Makro?

Inhalte aus mehreren Dateien zusammenfassen Makro?
10.06.2008 09:26:00
Sascha
Hallöle,
ich hoffe mein Anliegen ist so überhaupt zu lösen.
  • Ich habe mehrere Dateien (siehe Link) in der Vertreter ihre geplanten Kundenbesuche eintragen.

  • Diese Dateien liegen alle in einem Ordner

  • Pro Kalenderwoche gibt es eine Datei.

  • In jeder Datei gibt es Arbeitsblätter für Montag, Dienstag, ... - Samstag.

  • In Spalte B tragen die Vertreter als Besuchskennzeichen ein x ein, in Spalte C wird ein x eingetragen wenn ein Auftrag platziert wurde.
    Nun zum Anliegen:
  • Ich möchte gerne (bzw Chef sagt ich soll ;-) ) in einer neuen Excel-Tabelle eine Zusammenfassung der Daten durchführen.

  • Letztlich also die Zeilen mit Inhalt aus den einzelnen Tabellenblättern in einem Tabellenblatt untereinander schreiben.

  • Dieses optimalerweise über alle Dateien des Ordners.

  • Traumhaft wäre dann noch, das Datum (im Tabellenblatt immer in E1) auch noch mit in die Zeile einzutragen.

  • Geht sowas überhaupt umzusetzen? Wenn ja, wäre ich für einen Lösungsansatz sehr sehr dankbar.
    Datei: https://www.herber.de/bbs/user/52971.xls
    Vielen Dank
    Sascha

    Anzeige

    4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Inhalte aus mehreren Dateien zusammenfassen Ma
    10.06.2008 09:58:00
    Case
    Hallo,
    das geht natürlich, wird aber bei "VBA bescheiden" nicht ganz einfach für Dich. :-)
    Wenn diese Abfrage auf viele Dateien und öfters ausgeführt wird, dann würde ich versuchen, das über "quasi geschlossene" Dateien zu realisieren.
    Zunächst mal etwas grundsätzliches - mit einem Layout, das verbundene Zellen enthält arbeite ich als Programmierer NIE. Das geht über kurz oder lang schief.
    Aber den von Dir gewünschten Lösungsansatz kann ich Dir geben:

    Beispiel 1


    Beispiel 2

    Servus
    Case

    Anzeige
    AW: Inhalte aus mehreren Dateien zusammenfassen Makro?
    10.06.2008 10:27:28
    fcs
    Hallo Sacha,
    es geht vieles und das Einsammeln von Daten aus identisch aufgebauten Exceldateien geht verhältnismäßig einfach.
    1. Erstelle eine Musterarbeitsmappe, die ein Tabellenblatt enthält das für jede Information, die du erfassen/auslesen willst eine Spalte enthält und formatiere die Spalten entsprechend den zu erwartenden Einträgen.
    Also etwa folgende Spalten
    Vertreter (aus dateiname?)
    Datum
    BKZ
    Auftrag-KZ
    Kunden-Nr
    Name
    u.s.w.
    2. In einer VBA-Prozedur arbeitest du dann die folgenden Schritte ab
    a) Öffne die leere Musterdatei und weise sie einer Workbook-Variablen zb. objWbZiel zu
    b) speichere sie unter einem neuen Namen
    c) weise das leere Tabellen-Blatt einer Worksheets-Variablen z.B. objWksZiel zu
    Setze den Zeilenzähler für die Zieltabelle auf den Startwert
    d) Setze oder wähle das Verzeichnis mit den Vertreterbesuchen
    e) Arbeite in einer Schleife alle Dateien im Verzeichnis ab
    e1)Öffne die Datei schreibgeschütz und weise sie einer Workbook-Variablen zb. objWbQuelle zu
    e11) Speichere den Dateinamen in einer Variablen (als VertreterName)
    e2)Arbeite die Tabellenblätter Montag bis Samstag in einer Schleife ab
    e22)Weise das jeweilige Tabellenblatt einer Worksheet-Variablen zu zb. objWksQuelle
    e23)Speichere das Datum aus E1 in einer Variablen
    e3)Arbeite in einer Schleife alle Zeilen in Spalte C ab, die einen Kunden-Eintrag haben
    e31)Trage Vertretername und Datum in die Zeile in der Zieltabelle
    e32)Trage die Daten aus der Zeile der Quell-Tabelle(Spalten B, C, E, H, O, Q) in die Zieltabelle ein
    e33)Erhöhe den Zeilenzähler für die Zieltabelle um 1
    e4) schließe die Quelldatei ohne zu speichern
    f)Speichere die neue zusammengefasste Datei objWbZiel
    Für die oben beschriebenen Schritte findest du im Archiv zahlreiche Beispiele, die du jetzt auf deine Anwendung anpassen muss.
    Gruß
    Franz
    P.S. Empfehlung für den Chef: Schicke Sascha auf einen Excel-VBA-Kurs oder bezahle einen Programmierer.

    Anzeige
    AW: Inhalte aus mehreren Dateien zusammenfassen Ma
    10.06.2008 12:56:53
    Sascha
    Cool, vielen Dank für die vielen Hinweise. Das Problem ist tatsächlich meine mangelnde VBA-Erfahrung.
    Was das Design mit den verbundenen Zellen und Spalten betrifft stimme ich voll zu, das ist Grauenhaft. Das habe ich bereits so vorgefunden und lässt sich nicht umgehend beheben.
    Was speziell deine Hinweise betrifft muss ich mich wohl wirklich ordentlich reinfuchsen, lerne aber sicher auch das ein oder andere dabei. Nachfragen könnten (werden) aber sicherlich erfolgen!
    Danke
    Sascha

    Anzeige
    AW: Inhalte aus mehreren Dateien zusammenfassen Ma
    17.06.2008 08:49:35
    Sascha
    Ich habe nun folgendes Makro gefunden, was zu teilen schon das tut was ich will:
    Dieses Makro führt die Inhalte alle vorhandenen Tabellenblätter aus allen Mappen in ein neues Blatt zusammen.
    Wie kann ich den nun festlgend, dass nur die Blätter, Montag, Dienstag, Mittwoch, Donnerstag, Freitag und Samstag kopiert werden? Und hier auch nur vonB1 bis AC50 ?
    Vielen Dank
    Sascha
    
    Sub Zusammenführen_in_eine_Tabelle(Verzeichnis As String)
    ' Führt die Tabellen aus den Dateien in Verzeichnis in einer Datei zusammen
    ' Dabei werden die Daten aus den Tabellen der Quell-Dateien in eine oder mehr Ziel-Tabelle(n) _
    _
    kopiert
    ' Dabei werden in den Tabellen alle Formeln in Werte verwandelt
    Dim wbQuelle As Workbook, wksQuelle As Worksheet, wbZiel As Workbook, wksZiel As Worksheet
    Dim Datei As String, ZeileDaten As Long, Zeile As Long, wksListe As Worksheet
    Dim Spaltenformat As Boolean, I As Integer, Blatt As Integer
    'Neue Datei zum Zusammenführen der Tabellen Dateien anlegen
    Set wbZiel = Workbooks.Add(Template:=xlWBATWorksheet)
    Set wksZiel = wbZiel.Sheets(1)
    Blatt = 1 'Zählnummer für Blätter mit Daten
    wksZiel.Name = "Tabelle" & Blatt
    wbZiel.Worksheets.Add After:=Sheets(1) 'Blatt das die zusammengefassten Tabellen  _
    protokolliert
    Set wksListe = ActiveSheet
    wksListe.Name = "Importprotokoll"
    Zeile = 1
    wksListe.Cells(Zeile, 1) = "Import-Protokoll"
    Zeile = 2
    wksListe.Cells(Zeile, 1) = "Quell-Datei"
    wksListe.Cells(Zeile, 2) = "Quell-Tabelle"
    wksListe.Cells(Zeile, 3) = "eingefügt in Blatt"
    ZeileDaten = 1
    Application.ScreenUpdating = False
    'Exceldateien im Verzeichnis Öffnen
    Datei = Dir(Verzeichnis & "*.xls")
    Spaltenformat = False
    Do Until Datei = ""
    Application.StatusBar = "Die " & Zeile - 1 & ". Datei wird bearbeitet, Dateiname: " &  _
    Datei
    Set wbQuelle = Workbooks.Open(FileName:=Verzeichnis & Datei, ReadOnly:=True)
    For Each wksQuelle In wbQuelle.Worksheets 'Variante für alle Tabellenblätter
    With wksQuelle
    If ZeileDaten + .UsedRange.Rows.Count > wksZiel.Rows.Count Then
    Blatt = Blatt + 1
    wbZiel.Worksheets.Add After:=Sheets(Blatt - 2) 'weiteres Blatt für Daten
    Set wksZiel = wbZiel.Sheets(Blatt)
    wksZiel.Name = "Tabelle" & Blatt
    Spaltenformat = False
    ZeileDaten = 1
    End If
    If Spaltenformat = False Then
    'Aus der 1. Tabelle der nächsten, Datei werden die Spaltenbreiten ausgelesen und in  _
    die Ziel-Tabelle übertragen
    For I = 1 To .UsedRange.Column + .UsedRange.Columns.Count - 1
    wksZiel.Columns(I).ColumnWidth = .Columns(I).ColumnWidth
    Next I
    Spaltenformat = True
    End If
    Zeile = Zeile + 1
    wksListe.Cells(Zeile, 1) = wbQuelle.FullName
    wksListe.Cells(Zeile, 2) = wksQuelle.Name
    wksListe.Cells(Zeile, 3) = Blatt
    'Formeln durch Werte ersetzen
    .UsedRange.Copy
    .Range(.UsedRange.Address).PasteSpecial Paste:=xlPasteValues
    .UsedRange.EntireRow.Copy Destination:=wksZiel.Cells(ZeileDaten, 1)
    ZeileDaten = ZeileDaten + .UsedRange.Rows.Count
    End With
    Next wksQuelle
    wbQuelle.Close Savechanges:=False
    Datei = Dir
    Loop
    Application.StatusBar = False
    Application.ScreenUpdating = True
    wbZiel.Activate
    'Protokollliste Formatieren
    wksListe.Select
    wksListe.Columns("A:B").AutoFit
    wksListe.Range("A3").Select
    ActiveWindow.FreezePanes = True
    ' Datei-Speichern Dialog anzeigen
    Application.Dialogs(xlDialogSaveWorkbook).Show
    End Sub
    


    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Inhalte aus mehreren Excel-Dateien zusammenfassen


    Schritt-für-Schritt-Anleitung

    Um die Daten aus mehreren Excel-Dateien zusammenzuführen, kannst du ein Makro in VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du vorgehen kannst:

    1. Musterarbeitsmappe erstellen:

      • Erstelle eine neue Excel-Datei, die die Struktur für die zusammenzuführenden Daten hat. Füge Spalten für alle benötigten Informationen wie „Vertreter“, „Datum“, „BKZ“ und „Auftrag-KZ“ hinzu.
    2. VBA-Editor öffnen:

      • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    3. Neues Modul erstellen:

      • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“ und wähle „Einfügen“ > „Modul“.
    4. Makro-Code einfügen:

      • Füge den folgenden Code in das Modul ein:
    Sub Zusammenführen_in_eine_Tabelle(Verzeichnis As String)
        ' Führt die Tabellen aus den Dateien in Verzeichnis in einer Datei zusammen
        Dim wbQuelle As Workbook, wksQuelle As Worksheet, wbZiel As Workbook, wksZiel As Worksheet
        Dim Datei As String, ZeileDaten As Long, Zeile As Long, wksListe As Worksheet
        ' Neue Datei zum Zusammenführen der Tabellen erstellen
        Set wbZiel = Workbooks.Add
        Set wksZiel = wbZiel.Sheets(1)
        ' ...
        ' Der restliche Code folgt hier, wie im Beispiel
    End Sub
    1. Verzeichnis festlegen:

      • Setze das Verzeichnis, in dem sich deine Excel-Dateien befinden, im Code.
    2. Makro ausführen:

      • Schließe den VBA-Editor und führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf „Ausführen“ klickst.

    Mit diesem Makro kannst du mehrere Excel-Dateien zusammenführen, ohne jede Datei manuell zu öffnen.


    Häufige Fehler und Lösungen

    • Fehler: „Datei nicht gefunden“

      • Stelle sicher, dass der Pfad korrekt ist und alle Dateien sich im angegebenen Verzeichnis befinden.
    • Fehler: „Typkonflikt“

      • Achte darauf, dass die Datentypen in den Spalten übereinstimmen. Stelle sicher, dass z.B. Zahlen nicht als Text formatiert sind.

    Alternative Methoden

    Falls du kein Makro verwenden möchtest, gibt es auch andere Methoden:

    1. Power Query:

      • Mit Power Query kannst du Daten aus mehreren Excel-Dateien zusammenführen, indem du die Abfrage-Editor-Funktion nutzt.
    2. Manuelles Kopieren:

      • Du kannst die Daten manuell aus den einzelnen Dateien kopieren und in eine neue Datei einfügen. Dies ist jedoch zeitaufwendig und nicht empfehlenswert bei vielen Dateien.

    Praktische Beispiele

    Angenommen, du hast mehrere Excel-Dateien, die wöchentliche Verkaufszahlen enthalten. Du möchtest diese in eine zentrale Datei zusammenfassen. Nutze das Makro, um:

    • Alle Daten aus den Blättern „Montag“ bis „Samstag“ zu extrahieren.
    • Die relevanten Spalten wie „Vertreter“, „Umsatz“ und „Aufträge“ zu übertragen.

    Das Beispiel-Makro, das wir zuvor gesehen haben, kann leicht angepasst werden, um diese spezifischen Daten zu erfassen.


    Tipps für Profis

    • Vermeide verbundene Zellen:

      • Verbundene Zellen können Probleme beim Zusammenführen von Daten verursachen. Achte darauf, dass deine Quelldaten gut strukturiert sind.
    • Namen für Tabellenblätter verwenden:

      • Benenne deine Tabellenblätter einheitlich, um das Auffinden der Daten zu erleichtern.
    • Regelmäßige Backups:

      • Sichere deine Dateien regelmäßig, um Datenverluste zu vermeiden.

    FAQ: Häufige Fragen

    1. Wie kann ich mehrere Excel-Dateien zusammenführen, ohne jede Datei zu öffnen? Du kannst dies mit einem VBA-Makro tun, das die Dateien im Hintergrund öffnet und die Daten zusammenführt.

    2. Gibt es eine Möglichkeit, die Dateien automatisch zu aktualisieren? Ja, du kannst das Makro so einstellen, dass es beim Öffnen der Datei automatisch ausgeführt wird, um die neuesten Daten zu ziehen.

    3. Funktioniert das auch in Excel 365? Ja, das Makro funktioniert in Excel 365 sowie in anderen Versionen von Excel, die VBA unterstützen.

    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