Microsoft Excel

Herbers Excel/VBA-Archiv

Dateien zusammenführen

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

Hoffentlich hilfts
Tschüs Werner


  

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.

Mit freundlichem Gruß

Peter Kloßek


 

Beiträge aus den Excel-Beispielen zum Thema "Dateien zusammenführen"