![]() |
Betrifft: Dateien zusammenführen
von: Alex
Geschrieben am: 25.09.2014 17:07:32
Werte Experten,
ich würde gerne Daten aus mehreren Dateien zusammenführen und bitte dazu um Hilfe.
Ich habe innerhalb eines Ordners zwischen 1-50 Dateien die ident aufgebaut aber unterschiedlich benannt sind. Daraus sollen Werte aus einzelnen Zellen und der Dateiname in einer Datei entsprechend meiner Vorlage gesammelt werden.
https://www.herber.de/bbs/user/92819.xlsx
Das Registerblatt Zusammenfassung soll die Datei darstellen welche die Werte sammelt, die Register Datei 1 und Datei 2 stehen für die einzelnen Dateien.
Wie schaffe ich es, die Daten aus den einzelnen Dateien so zu sammeln und darzustellen wie in meiner Vorlage aus den Registern?
Vielen Dank für die Hilfe,
Gruß Alex
![]() ![]() |
Betrifft: AW: Dateien zusammenführen
von: Michael H
Geschrieben am: 26.09.2014 20:27:00
Hallo Alex!
Das Problem hatte ich auch mal. Ich wurde in der Recherche fündig. Probier das bitte.
VG
Michael H
![]() ![]() |
Betrifft: AW: Dateien zusammenführen
von: Peter Kloßek
Geschrieben am: 26.09.2014 21:17:44
Hallo Alex,
ich habe mal die ganzen Formeln, die in der Zusammenfassung stehen, in die von mir eingefügte Tabelle1 geschrieben. Die Formeln in der Zusammenfassung habe ich gelöscht. Von Tabelle1 werden die Formeln mit Hilfe des "Makro1()" in die einzelnen Dateien kopiert. Die Formeln bekommen dadurch ihre Basis und weisen als Ergebnisse die gewünschten Werte auf. Die Werte werden alsdann durch "Transponieren" in die Zusammenfassung übertragen. Voraussetzung ist natürlich, dass die Dateien alle exakt denselben Aufbau haben! Probier mal mit der folgenden Datei aus.
https://www.herber.de/bbs/user/92847.xlsm
Die zweite Datei zeigt den Zustand nach der Ausführung von Makro1.
https://www.herber.de/bbs/user/92848.xlsm
Irgendetwas stimmt nicht mit der von Dir hochgeladenen Datei. Ich bekam laufend Warnhinweise auf meinen Bildschirm, die ich nicht abstellen konnte.
Mit freundlichem Gruß
Peter Kloßek
![]() ![]() |
Betrifft: AW: Dateien zusammenführen
von: Werner
Geschrieben am: 26.09.2014 22:18:47
Hallo
hatte das Problem auch, habe damals gesucht und mit Anpassung folgendem Code sehr gute Ergebnisse erreicht.
https://www.google.com/url?q=https://www.herber.de/forum/archiv/940to944/942000_Zellen_aus_nZeilen_und_nDateien_kopieren_und_in.html&sa=U&ei=HDUCVKiSBcvsaJ3DgeAM&ved=0CBIQFjAGODw&client=internal-uds-cse&usg=AFQjCNFJxdhwbuYK9Nkp52ip5oy94WjUMg
Zellen aus n-Zeilen und n-Dateien kopieren und
von: fcs
Geschrieben am: 15.01.2008 19:01:38
Hallo Simone,
hier mal das Grundgrüst um die Exceldateien zu suchen, in einer Schleife zu öffnen und bestimmte Daten aus den Blättern der Quelldateien in die Sammeldatei zu übertragen.
Da du über die zu kopierenden Zellbereich(e) keine speziellen Angaben gemacht hast, hab ich hierfür beispielhaft eine Kopierzeile eingefügt, diese müßtest du noch an deine Bedürfnisse anpassen. Ebenso ggf. die Neuberechnung der jeweils nächsten Einfügezeile (lZeileneu).
Das Makro kannst du in einer beliebigen Excel-Datei speichern. Jedoch nicht in einem der Verzeichnisse, die du auswerten willst!
Gruß
Franz
Sub DatenSammeln() Dim wbNeu As Workbook, wksNeu As Worksheet, lZeileneu As Long Dim wbQuelle As Workbook, wksQuelle As Worksheet, strQuelle, i As Integer Dim strVerzeichnis, VerzAktuell As String, DateiNr As Integer 'Verzeichnis durch Wahl einer Datei wählen VerzAktuell = VBA.CurDir strVerzeichnis = Application.GetOpenFilename(Filefilter:="Exceldateien(*.xls),*.xls", _ Title:="Bitte Datei im gewünschten Verzeichnis wählen und öffnen") If strVerzeichnis = False Then Exit Sub strVerzeichnis = VBA.CurDir VBA.ChDir VerzAktuell With Application.FileSearch .LookIn = strVerzeichnis .SearchSubFolders = True .FileType = msoFileTypeExcelWorkbooks .Execute Set wbNeu = Workbooks.Add(Template:=xlWBATWorksheet) Set wksNeu = wbNeu.Worksheets(1) lZeileneu = 1 DateiNr = 1 Application.ScreenUpdating = False For Each strQuelle In .FoundFiles Application.StatusBar = "Datei Nummer " & DateiNr & " von " _ & .FoundFiles.Count Set wbQuelle = Workbooks.Open(FileName:=strQuelle, ReadOnly:=True) 'Alle Tabellenblätter in Quelle abarbeiten For i = 1 To wbQuelle.Worksheets.Count Set wksQuelle = wbQuelle.Worksheets(i) wksNeu.Cells(lZeileneu, 1) = wbQuelle.FullName wksNeu.Cells(lZeileneu, 2) = wksQuelle.Name With wksQuelle .Range(.Cells(2, 1), .Cells(2, 10)).Copy 'bereich A2:J2 wksNeu.Cells(lZeileneu, 3).PasteSpecial Paste:=xlFormats 'Zell-Formate wksNeu.Cells(lZeileneu, 3).PasteSpecial Paste:=xlValues 'Zellewerte 'ggf. Code für weitere Zellbereiche ergänzen End With lZeileneu = lZeileneu + 1 Next i wbQuelle.Close savechanges:=False DateiNr = DateiNr + 1 Next strQuelle End With Application.ScreenUpdating = True Application.StatusBar = False End Sub
![]() ![]() |
Betrifft: AW: Dateien zusammenführen
von: Alex
Geschrieben am: 28.09.2014 16:27:18
Hallo Peter,
herzlichen Dank schon mal für Deine Hilfe und Mühe!
Wie müsste Dein Code angepasst werden, dass nach dem Starten des Makros die Möglichkeit erscheint, die Dateien auszuwählen die eingelesen werden sollen und diese dann so wie bereits in deiner Vorlage dargestellt erscheinen?
Tut mir leid, mit anpassen von solchen Codes kenne ich mich leider gar nicht aus…
Vielen Dank,
Mit freundlichem Gruß
Alex
![]() ![]() |
Betrifft: Auswahl der Dateien
von: Peter Kloßek
Geschrieben am: 29.09.2014 22:07:20
Hallo Alex,
die sogenannten "Dateien" stehen in Deinem Beispiel als Arbeitsblätter im selben Workbook wie die Zusammenfassung. Mein Lösungsvorschlag zielte darauf ab, dass von diesem Zustand ausgegangen werden sollte. Man kann natürlich nicht nur zwei Arbeitsblätter anfügen, sondern eigentlich beliebig viele. Die Auswahl der Dateien (Workbooks) und das Einfügen in die Zusammenfassung kann entweder manuell durch Verschieben der Arbeitsblätter oder maschinell per Makro erfolgen. Erst danach kommt meine Lösung zum Tragen. Um eine Auswahl maschinell vorzunehmen, muss zunächst einmal klar sein, wo sich die auszuwählenden Dateien befinden (in welchen Verzeichnissen und mit welchen Namen). Natürlich kann man auch einen Makro schreiben, der ein Eingabefeld aufschlägt, in welches das Verzeichnis und der Dateiname einzutragen sind - nur ist das dann in der Praxis zeitaufwendiger, als die betreffende Datei gleich händisch in den Hauptspeicher zu laden. Es lohnt sich nur dann, wenn z. B. die zusammenzuführenden Dateien in einem bestimmten Verzeichnis (oder klar bestimmbaren Verzeichnissen) stehen und eine ebenso klare Regel der Inhalte und Namen möglich ist. Außerdem ist noch zu fragen, ob sich die (immer gleichen!) Datenformate allein (als ein Arbeitsblatt) oder neben anderen Arbeitsblättern in den betreffenden Dateien befinden. Hierüber fehlt mir leider jede Kenntnis. Wenn ich Dir weiterhelfen soll, brauche ich umfassende Beispiele (welche Arbeitsblätter, die in welchen Dateien stecken und die wiederum in welchen Verzeichnissen zu finden sind). Sollte es gar keine sichere Regel für die Auswahl geben, solltest Du am besten mit dem Dir geläufigen Excel-Instrumentarium die einzelnen Arbeitsblätter manuell in die Zusammenfassung einfügen. Da ich den Gesamtzusammenhang nicht kenne, kann ich Dir momentan auch keinen Rat geben, geschweige denn ein funktionierendes - und praxiskonformes - Makro erstellen.
Mit freundlichem Gruß
Peter Kloßek
![]() ![]() |
Betrifft: AW: Auswahl der Dateien
von: Alex
Geschrieben am: 30.09.2014 13:38:26
Hallo Peter,
danke vielmals für Deine Antwort!
Der Gesamtzusammenhang ist folgender:
Es gibt folgende Datei als Basis, diese stellt die (Teil)-Kalkulation eines Projektes dar:
https://www.herber.de/bbs/user/92909.xlsx
Ein Projekt kann nun aus 1 bis 50 solcher Dateien bestehen (Immer selber Aufbau, nur ein Tabellenblatt in der Datei aber unterschiedlichste Dateinamen). Warum nicht innerhalb einer Datei auf mehreren Tabellenblättern gearbeitet wird verstehe ich nicht, aber so ist meine Vorgabe.
Ziel ist es nun, aus diesen einzelnen Dateien die Werte zu einer Gesamtkalkulation zusammenzuführen. Dies soll das Register „Zusammenfassung“ in der Datei, die Du mir bereits bearbeitest hast darstellen.
Ich habe es mir nun so gedacht, dass ich einen Ordner anlege mit der Vorlage für die Kalkulation und der Zusammenfassung. Dieser Ordner soll dann für jedes neue Projekt kopiert werden. Innerhalb des Ordners soll dann die benötigte Anzahl an Dateien mittels „Speichern unter“ erstellt werden. Wenn alle Dateien erstellt sind, soll aus der Zusammenfassung heraus ein Makro die Möglichkeit bieten, alle Kalkulations-Dateien des Ordners auszuwählen und diese dann wie von dir dargestellt einzulesen. Verzeichnisse und Namen der Ordner liegen jedoch außerhalb meines Einflussbereiches.
Ich hoffe das ist nachvollziehbar und Du kannst mir helfen?
Vielen Dank schon mal im Voraus,
mit freundlichem Gruß
Alex
![]() ![]() |
Betrifft: AW: Auswahl der Dateien
von: Peter Kloßek
Geschrieben am: 01.10.2014 18:28:15
Hallo Alex,
zu Deinen Ausführungen
"Verzeichnisse und Namen der Ordner liegen jedoch außerhalb meines Einflussbereiches."kann ich nur sagen: Bei der genannten Konstellation ist die einfachste und beste Lösung für Dich, wenn Du die Arbeitsblätter aus den Quell-Dateien einzeln in die Zieldatei (meine Beispieldatei) kopierst (die Muster-Arbeitsblätter natürlich vorher löschen). Da offenbar sämtliche Arbeitsblätter in den Quell-Dateien denselben Namen ("Kalkulation") haben, müssen sie in der aufnehmenden Datei mit einem neuen treffenden Namen umbenannt werden. Dies könnte z. B. der Erzeugnis-Name sein. Wenn sämtliche gewünschten Arbeitsblätter in die Zieldatei übernommen sind, solltest Du eventuell noch vorhandene Einträge in der Zusammenfassung entfernen und anschließend den Makro1 betätigen.
![]() |