Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
984to988
984to988
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

    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

    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

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige