Dateien im Excel-Format in je 1 neues Blatt 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 reines Textformat und kein Excel-Format.
Alle Files, welche dem Muster (beispielsweise *.xlsx) entsprechen, werden durch das Makro nacheinander in jeweils ein neues Arbeitsblatt eingefügt. Im Code kann festgelegt werden, ob die Namen der Ursprungsdateien als Blattbezeichnung (im Register unten) verwendet werden sollen oder ob Excel die Verwaltung übernimmt.
Hinweis: Wenn Sie im Code bestimmen, dass bestehende Blätter nicht gelöscht werden, dann muss gewährleistet sein, dass bei Übernahme des Filenamens kein Blatt mit diesem Namen existiert. Alternativ müssen Sie den Code vorher anpassen oder im Vorwege auf Namenskonflikte prüfen.
Zu Beginn wird geprüft, ob das dieses Blatt leer ist. Sind Daten in der Ziel-Tabelle (also im aktuellen Sheet), dann wird (je nach Festlegung im Code) ein neues Blatt entweder mit dem Namen der Quelldatei oder den Excel-Defaultnamen (Tabelle1, Tabelle2, …) angelegt.
In die Ziel-Datei werden die extern liegenden Daten nacheinander importiert. Hier, in diesem File ist auch das Makro, der VBA-Code integriert. In der Vorlage ist zu Beginn eine komplett leere Tabelle, welche durch Aufruf des Makros mit den Daten der ersten Quelldatei gefüllt wird. Jede weitere Quelldatei kommt in ein neues Tabellenblatt. Ausnahmsweise liegen hier zwei Versionen der Musterdatei (Zieldatei für den Import) vor: Im Format *.xlsm (ab 2007) hier (Allesimport_02.xlsm), im Dateiformat *.xls (AllesImport_02.xls, Excel 2003) hier. Falls Sie unsere Muster-Daten verwenden wollen , so liegen diese im Format *.xlsx und als *.xls vor. Laden Sie diese als gepackte Datei (*.zip) natürlich mit 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 all zu 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:1‑Import).
Brauchen Sie Anpassungen an Ihre eigenen, speziellen Bedürfnisse? Selbstverständlich dürfen Sie das selber durchführen oder durchführen lassen. Und natürlich vermitteln wir auch gerne an den eigentlichen Autor des Codes, an GMG-CC.
[NachObenLetzte Verweis=„ML: xls-Import n:n”]