100 Excel Tabellen zusammenführen

Hallo,

ich habe alle Fragen zum Thema Excel und das zusammenführen von mehreren Tabellen durchsucht, allerdings gab es immer leichte Abweichungen.

Mein Problem bzw. meine Frage:
Ich möchte sehr viele Excel Tabellen zu einer zusammenführen.
Alle Tabellen haben den selben Aufbau, das heisst, ich möchte einfach nur das die Informationen aus allen Tabellen untereinander in einer Tabelle verfügbar sind.

Ich hoffe, dass mir jemand helfen kann!

Danke und Gruß

Hallo, EdisionDV3.

Ich möchte sehr viele Excel Tabellen zu einer zusammenführen.
Alle Tabellen haben den selben Aufbau, das heisst, ich möchte
einfach nur das die Informationen aus allen Tabellen
untereinander in einer Tabelle verfügbar sind.

Ist das eine einmalige Angelegenheit oder muß das immer wieder gemacht werden?

VG
Carsten

Hallo,

ich muss das immer wieder machen!
Deswegen hoffe ich, dass mir jemand helfen kann!

Gruß
EdisionDV3

Hallo EdisionDV3.

ich muss das immer wieder machen!
Deswegen hoffe ich, dass mir jemand helfen kann!

Ich habe da noch drei weitere Fragen:

  1. Bist Du mit VBA vertraut? (zumindest ein bißchen)

  2. Hast Du in ‚C:\WINDOWS\System32‘ die Datei Comdgl32.ocx ?

  3. Hast Du in ‚C:\WINDOWS\System32‘ die Datei mscomctl.ocx ?

Ich habe schon ein bißchen angefangen mit dem Schreiben, habe ja aber eigentlich keine Ahnung, wie Du Dir das Ganze so vorstellst. Erläutere doch 'mal, wie das Ganze so von der Bedienung her ablaufen soll.

VG
Carsten

Guten Tag,

Hallo,

mit VBA bin ich leider nicht vertraut, zumindest nicht das ich wüsste.
Die beiden Dateien habe ich!

Ich Versuche dir das ganze mal zu erklären.
Ich habe die Aufgabe bekommen alle Artikel die wir verkaufen (in der Firma in der ich arbeite), in eine große Exceltabellen einzufügen. Es handelt sich hier um mind. 50.000 Artikel. Ich kann jeweils nur 50 Artikel aus unserem System zu Excel exportieren. Das heisst, ich hätte am Ende des exportieren 1000 Excellisten, mit jeweils 50 Artikeln.
Was ich jetzt machen würde, wäre immer zwischen den Fenstern hin und her springen um auszuschneiden und dann alles in eine Tabelle einfügen. Dafür würde ich ewig brauchen.

Ich hoffe, dass nun klar geworden ist, um was es sich handelt.

Viele Grüße
Jan (EdisionDV3)

Hallo Jan.

So. Ich hätte eine Datei fertig. Falls Du noch interessiert bist…

VG
Carsten

Hey Carsten,

natürlich bin ich noch interessiert!!
Wie läuft das jetzt weiter ab!?

Gruß
Jan

Hallo Jan.

Ich denke, am einfachsten ist es, wenn ich Dir die Datei per Email schicke. Ich habe die Datei „Test“ genannt. Sie enthält VBA-Code und sie enthält einen Verweis auf die Datei ‚Comctl32.ocx‘. Das hört sich vielleicht gewaltig an, ist aber nichts weiter als die Einbindung einer Fortschrittleiste in ein Formular, das in die Excel-Datei integriert ist.

Beim Öffnen der Datei soll neben der Symbolleiste „Standard“ die neue Symbolleiste „DatenImport“ erzeugt werden. Diese enthält einen Menüpunkt „Daten impotieren aus…“. Sobald dieser geklickt wird, wird der Dialog „Daten importieren aus…“ eingeblendet, in dem Du die Dateien auswählen kannst, aus denen die Daten importiert werden sollen. Nachdem Du die Dateien ausgewählt hast (es können mehrere Dateien gleichzeitig ausgewählt werden), klickst Du auf die Schaltfläche „Importieren“. Daraufhin wird das Fenster geschlossen und es öffnet sich das Dialogfeld „Daten-Import“. Dort kannst Du die Spalten festlegen, aus denen die Daten importiert werden sollen. Dann klickst Du auf „Daten-Import starten“ um die Daten zu importieren. Wenn alle Daten imporiert wurden, klickst Du auf „Beenden“, um das Fenster zu schließen und zu Excel zurückzukehren.

Soweit die Theorie. Üblicherweise gibt es Probleme, wenn Dateien mit Verweisen auf OCX-Dateien auf einen anderen Computer kopiert werden. Es wird dann beim Öffnen der Datei eine Meldung angezeigt, daß etwas nicht auf dem Computer vorhanden ist. Gehen wir erstmal davon aus, daß alles klappt, denn Du sagtest ja, daß Du die Datein hast.

Ich habe zum Testen 10 Mappen mit Daten in 3 Spalten und jeweils 50 Zeilen angelegt.
Die Tabellenblätter, sowohl in der Datei „Test“, als auch in den 10 Mappen, heißen alle „Tabelle1“. Sollte in Deiner Original-Datei das Tabellenblatt, in das Die Daten importiert werden sollen, anders heißen, dann muß der Code umgeschrieben werden.

Erste Datenzeile einer Quell-Datei: 1 (Fix)

Letzte Datenzeile einer Quell-Datei: Unterste bearbeitete(!) Zeile des Tabellenblattes

Naja. Soweit erstmal. Jetzt bräuchte ich noch Deine Email-Adresse, um Dir die Datei zu schicken. Dann kannst Du ja erstmal testen.

VG
Carsten

Ich möchte sehr viele Excel Tabellen zu einer zusammenführen.
Alle Tabellen haben den selben Aufbau, das heisst, ich möchte
einfach nur das die Informationen aus allen Tabellen
untereinander in einer Tabelle verfügbar sind.

Hallo Edision,

der Code ist zwar übertrieben für dein problem aber ich stolperte grad drüber im Internet, ist von einem Alex, ich habe ihn nur leicht modifiziert.

In der Zeile
For Each Datei In GetFiles(„C:\test“, False, „*.xls“)
ist der erste Parameter das Verzeichnis wo die Dateien stehen.
Der zweite gibt an ob auch Unterverzeichnisse durchsucht werden (True) oder nicht (false)
Der dritte ist das Suchmuster für die dateien, *.* für alle, *.xls für Exceldateien bzw. *.xl*

Als Ergebnis der Sub müßte in Spalte A des aktiven Tabellenblattes eine Liste aller gesuchten Dateien erscheinen.
Probiers mal aus und gib Feedback.

Unter Extras–Verweise mußt du den Verweis auf Microsoft Scripting Runtime setzen!

Gruß
Reinhard

Option Explicit
' Achtung!
' --\> Microsoft Scripting Runtime - Verweis notwendig!
Sub Dateilisten()
Dim Datei As File, Zei As Long
For Each Datei In GetFiles("C:\test", False, "\*.xls")
 Zei = Zei + 1
 Cells(Zei, 1) = Datei.Name
Next
End Sub
'
Public Function GetFiles(FolderPath As String, scanSubDirectorys As Boolean, Optional \_
SearchPattern As String, Optional SortBy As String) As Collection
 ' Die MSR - Objekte
 Dim objFs As New FileSystemObject
 Dim objRootFolder As Folder
 Dim objSubFolder As Folder
 Dim objFile As File
 ' Zwischenspeicher für den Rückgabewert der Funktion
 Dim HColl As New Collection
 Set HColl = Nothing
 ' Wenn kein Suchmuster angegeben alle Dateien zurückliefern
 If SearchPattern = "" Then SearchPattern = "\*"
 ' Das Ordner-Objekt für den angegebenen Pfad laden
 On Error GoTo err01
 Set objRootFolder = objFs.GetFolder(FolderPath)
err01:
 If Err.Number 0 Then
 Set GetFiles = HColl
 Exit Function
 End If
 ' Alle Dateien in diesem Ordner durchlaufen
 For Each objFile In objRootFolder.Files
 ' Wenn das Suchmuster übereinstimmt Datei der Collection hinzufügen
 If objFile.Name Like SearchPattern Then
 HColl.Add objFile
 End If
 Next
 ' Wenn angegeben, die Unterordner des Startpfades durchlaufen
 If scanSubDirectorys Then
 For Each objSubFolder In objRootFolder.SubFolders
 ' Alle per Rekursion zurückgelieferten Dateien der Hilfscollection hinzufügen
 For Each objFile In GetFiles(objSubFolder.Path, scanSubDirectorys, SearchPattern)
 HColl.Add objFile
 Next
 Next
 End If
 ' Wenn angegeben, die Hilfs-Collection sortieren
 If SortBy "" Then
 Set HColl = SortItemCollection(HColl, SortBy)
 End If
 ' Rückgabewert
 Set GetFiles = HColl
End Function
'
Public Function SortItemCollection(col As Collection, strPropertyName) As Collection
 Dim colNew As Collection
 Dim objCurrent As Object
 Dim objCompare As Object
 Dim lngCompareIndex As Long
 Dim variantCurrent As Variant
 Dim variantCompare As Variant
 Dim blnGreaterValueFound As Boolean
 'make a copy of the collection, ripping through it one item
 'at a time, adding to new collection in right order...
 Set colNew = New Collection
 For Each objCurrent In col
 'get value of current item...
 variantCurrent = CallByName(objCurrent, strPropertyName, VbGet)
 'setup for compare loop
 blnGreaterValueFound = False
 lngCompareIndex = 0
 For Each objCompare In colNew
 lngCompareIndex = lngCompareIndex + 1
 variantCompare = CallByName(objCompare, strPropertyName, VbGet)
 'die Vergleichstypen auf Variant geändert, somit können beliebige Datentypen \_
miteinander verglichen werden
 If variantCurrent