mehrere exceltabellen in einem Exceldokument zusammenführen
Hallo zusammen,
ich zerbreche mir gerade, wie ich es schaffen kann, dass ich mehrere Exceldateien in einer zusammenfassen kann.
Die verschiedenen Dateien befinden sich alle in einem Ordner. Nun möchte ich es schaffen, dass die ausgewählten Datensätze in einer neuen Datei untereinander erscheinen. Schön wäre es zudem, wenn sich das die "Hauptdatei" aktualisieren würde, wenn Änderungen in den anderen Dateien gemacht werden.
Ich denke hier sind so viel gute Leute - da sollte das doch kein Problem sein ;)
danke
euer xxl
Antwort schreiben
Antwort 1 von rainberg vom 20.05.2021, 07:22 Options
Hallo xxl,
da kann man nur pauschal antworten, da Deine Infos =0 sind.
Es ist möglich sowohl per Formel als auch per VBA in der Hauptdatei Verküpfungen zu den Quelldateien zu installieren.
Eine bessere Antwort lässt Deine Frage leider nicht zu.
Gruß
Rainer
Antwort 2 von xxl vom 20.05.2021, 08:35 Options
Hallo Rainer,
du hast recht mit deiner Aussage, dass mein Problem wenig Infos enthält.
Machen wir es anschaulicher:
Ich habe einen Hauptordner auf meinem Desktop. In diesen Ordner sollen nun verschiedene Exceldateien eingefügt werden.
Also Hauptordner: "Sammelordner"
Exceldatei "Info1", "info 2", usw
Die Exceltabellen haben immer denselben Aufbau.
Nun möchte ich eine weitere Exceldatei ("Auswertung") in den selben Hauptordner einfügen, die bestimmte Informationen aus den schon vorhandenen "Info.." Dateien holt.
Die Zelle A1 soll von allen "Info.."Dateien abgefragt werden und in "Auswertung" in die erste Spalte ab C3 untereinander eingefügt werden.
Zudem sollte es möglich sein, dass die Auswertungsdatei erkennt, wenn neue "Info.." Datei hinzugefügt werden und die "Auswertung" immer aktualisiert wird, wenn man sie aufruft.
Ich hoffe jetzt ist mein Problem ein bischen genauer formuliert ;)
Gruß
xxl
Antwort 3 von rainberg vom 20.05.2021, 10:20 Options
Hallo xxl,
nach Deiner erneuten Schilderung komme ich zum Schluss, dass eine Formellösung nicht das Gelbe vom Ei wäre.
Daher würde ich eine Makrolösung favorisieren, wobei ich dafür nicht der richtige Ansprechpartner bin.
Vielleicht hilft Dir ein Makrospezialist.
Gruß
Rainer
Antwort 4 von fedjo vom 25.05.2021, 07:58 Options
Antwort 5 von xxl vom 25.05.2021, 18:28 Options
Hallo
danke für eure Einträge. Ich habe jetzt eine Lösung gefunden, die mein Problem gelöst hat. Musste ein bischen suchen, aber es hat sich gelohnt.
Ich finde dieses Forum wirklich klasse!!
Euer
XXL
Antwort 6 von Hooker vom 25.05.2021, 22:13 Options
Hallo xxl,
Zitat:
Ich habe jetzt eine Lösung gefunden, die mein Problem gelöst hat.
Gib uns doch auch den Link dazu. ;-)
LG,
Hooker
Antwort 7 von xxl vom 26.05.2021, 17:53 Options
Ich habe nicht einen Link, sondern mehrere Ideen zusammengebaut. So sollen z.B auch Duplikate bei einer aktualisierung sofort beseitigt werden.
Sub Einlesen()
Call EventsOff
Dim Dateien As Integer
Dim DateiName As String
Dim zeile As Long
With Application.FileSearch
.NewSearch
.LookIn = ActiveWorkbook.Path
.Filename = "*.xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
If DateiName <> ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
zeile = ThisWorkbook.Sheets(1).Cells(Rows.Count, 5).End(xlUp).Row + 1
Workbooks(DateiName).Sheets(1).Range("B5:B107").Copy
ThisWorkbook.Sheets(1).Range("A" & zeile).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Workbooks(DateiName).Close
End If
Next Dateien
End If
End With
Call EventsOn
Call DoppelteNr
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Sub DoppelteNr()
Dim iRow As Integer, iRowL As Integer
iRowL = Cells(Cells.Rows.Count, 1).End(xlUp).Row
For iRow = iRowL To 1 Step -1
If WorksheetFunction.CountIf(Columns(1), Cells(iRow, 1)) > 1 Then
Rows(iRow).Delete
End If
Next iRow
End Sub
Dazu habe ich noch eine Userform eingebaut:
Private Sub Aktualisieren_Click()
Call Einlesen
test.Hide
End Sub
Private Sub UserForm_Click()
End Sub
Vielleicht hilft dies weiteren Usern.
Euer
xxl