Dateien im Excel-Format in 1 (existierendes) Tabellenblatt einfügen
In einem (1) Verzeichnis liegen eine oder mehrere Dateien im Excel-Format. Obwohl man mit viel gutem Willen auch *.csv dazu rechnen könnte, csv ist und bleibt ein textbasiertes und kein Excel-Format. Jeweils das erste Arbeitsblatt aller Files des benannten Verzeichnisses, welche dem Muster (beispielsweise *.xlsx) entsprechen, wird durch das Makro nacheinander (untereinander) in das derzeit aktuelle Arbeitsblatt eingefügt.
Zu Beginn des Ablaufs wird geprüft, ob das zu füllende Blatt leer ist. Sind Daten in der Ziel-Tabelle (also im aktuellen Sheet), dann wird nachgefragt, ob diese gelöscht werden sollen. Bei einem Nein werden die neuen Daten einfach angehängt, also beginnend nach der letzten Zeile mit Einträgen.
Falls im Code festgelegt wurde, dass die Quelldaten eine Überschriftzeile haben, dann wird diese natürlich nur beim ersten Einfügen mit übernommen, bei den folgenden Dateien nicht. Aber Achtung: Die erste Überschriftzeile wird auch dann mit übernommen, wenn existierende Daten nicht gelöscht worden sind.
In die Ziel-Datei werden die extern liegenden Daten in das aktuelle Arbeitsblatt importiert. Und dort (Ziel) ist auch das Makro, der VBA-Code integriert. In der Vorlage ist zu Beginn eine komplett leere Tabelle, welche durch Aufruf des Makros gefüllt wird. Ausnahmsweise liegen hier zwei Versionen der Musterdatei (Zieldatei für den Import) vor: Im Format *.xlsm (ab 2007) hier (Allesimport.xlsm) und im Dateiformat *.xls (AllesImport.xls, Excel 2003) hier. Falls Sie unsere Muster-Daten verwenden wollen , so liegen diese im Format *.xlsx und *.xls vor. Laden Sie diese als gepackte Datei (*.zip) mit Kopfzeilen oder ohne Kopfzeilen einfach herunter.
Hinweis: Wenn Sie die (leere) Muster-Datei ausführen, die Daten also importieren wollen und Sie auch den Pfad der Quelldateien entweder im Makro oder auf der Festplatte angepasst haben, dann können Sie das Makro mit AltF8 in dem dann erscheinenden Fenster aussuchen und von dort aus auf aufrufen und starten.
Der Code hat nicht allzu viele Kommentare, obwohl er nicht in jedem Fall ohne mehr oder weniger Nachdenken zu verstehen ist. Im Vordergrund steht hier eine lauffähige Lösung einer Aufgabe, nicht der Lerneffekt. Das soll Sie aber nicht daran hindern, sich intensiv mit den verschiedenen Passagen auseinanderzusetzen. – Falls es Sie irritiert: Die beiden Funktionen zur Bestimmung der letzten Zeile und Spalte habe ich bewusst ausgelagert. So haben Sie eher die Möglichkeit, solch eine universelle Funktion auch in anderen Modulen einzusetzen.
Hinweis: Eine ähnliche Aufgabe wird hier im Blog diskutiert (n:n‑Import)
Brauchen Sie Anpassungen an Ihre eigenen, speziellen Bedürfnisse? Natürlich dürfen Sie das selber durchführen oder durchführen lassen. Und selbstredend vermitteln wir auch gerne an den eigentlichen Autor des Codes, an GMG-CC.
[NachObenLetzte Verweis=„ML: xls-Import n:1”]