Aus verschiedensten Gründen kann es sinnvoll oder erforderlich sein, dass aus mehreren Arbeitsmappen die Inhalte in eine einzige Mappe zusammengefasst werden sollen oder müssen. Die Ursprungsdaten können dabei in unterschiedlichen Formaten vorliegen, beispielsweise als Textdatei (*.txt, *.csv, …) oder als Excel-Datei (*.xls, *.xlsx, *.xlsm, …). Neben der Voraussetzung, dass alle in dem Vorgang zu importierenden Dateien vom gleichen Typ sind, also alle die gleiche Dateinamenerweiterung haben, gibt es nur eine einzige klare Bedingung für einen „sauberen” Import: die einzufügenden Dateien müssen alle den gleichen Aufbau haben; also gleiche Spaltenzahl, gleiche Spaltenposition; und alle Tabellen sind entweder alle mit oder alle ohne Überschrift-Zeile erstellt.
Die einzelnen Dateien können entweder in jeweils ein einziges neues Tabellenblatt eingefügt werden oder alle nacheinander in ein einziges Sheet. Als weitere Voraussetzung gilt: Textdateien sollen immer nur komplett übernommen werden, bei Bedarf auch ohne Kopfzeile.
Bei Excel-Dateien als Datenlieferant wird in diesen Lösungsvorschlägen davon ausgegangen, dass immer das erste Arbeitsblatt der Quell-Datei importiert wird, was aber durchaus im VBA-Code angepasst werden kann. – Weiterhin ist es denkbar, dass die zu importierenden Daten eine Kopfzeile (Überschrift) haben oder nicht. Ist dieses der Fall, dann soll (natürlich) nur eine einzige Kopfzeile in die Zieldatei eingefügt werden.
Die eine Möglichkeit zur Erreichung des Ziels ist copy and paste. Bei weniger als einer Handvoll Files mag das ja noch tragbar sein, aber wenn es mehrere Dateien sind oder der Vorgang immer wieder durchgeführt werden muss, weil beispielsweise Daten aktualisiert worden sind, dann bietet sich eine Automatisierung per Makro (VBA-Programm) an. Das geht auch sehr gut, wenn die oben genannte Voraussetzung erfüllt ist, dass die zusammenzuführenden Tabellenblätter aller Dateien identisch aufgebaut sind.
Eine weitere Voraussetzung ist, dass alle zusammenzufassenden Files in nur einem (1) Verzeichnis sind. Und es werden auch alle in diesem Ordner enthaltenen Dateien mit der entsprechenden Endung für die Zusammenfassung verwendet. Dateien mit anderen als den im Code festgelegten Endungen werden nicht berücksichtigt. Das bedeutet beispielsweise: Es werden alle *.txt-Dateien aus dem Verzeichnis C:\ImportData\ von dem Makro eingelesen. Oder von allen *.xlsx-Dateien die Daten des ersten Tabellenblattes.
Hinweis: Sie werden nicht umhin kommen, die eine oder andere Änderung im VBA-Code der hier vorgestellten Musterlösungen vorzunehmen. Insbesondere sind dieses fest verankerte Werte für Pfade der Quelldateien. Wenn Sie keinerlei Erfahrung mit Programmierung haben, empfehlen wir Ihnen, fachkundige Hilfe in Anspruch zu nehmen. Bei Bedarf stehen wir Ihnen auch gerne mit Rat und Tat zur Seite, einfach eine Mail an uns.
Wir stellen Ihnen hier (nach und nach) verschiedene Lösungen bzw. Lösungsansätze vor. Für Tests von Ihrer Seite stehen Ihnen auch Musterdaten in den Formaten *.xls (Excel 2003), *.xlsx (Excel ab 2007), *.csv (mit Semikolon getrennt) sowie *.txt (mit Tabstopp getrennt) und natürlich jeweils ein Excel-Workbook mit dem VBA-Code zur Verfügung.
Hinweis: Wir räumen ein. dass manches „eleganter” programmiert werden kann. Vielleicht einige zehntel Sekunden schneller. Aber bei diesen Templates (Musterdateien) steht die Funktionalität und vor allen Dingen die Transparenz und Nachvollziehbarkeit des Codes im Vordergrund. Sie als Anwender sollen Änderungen vornehmen können, ohne dabei einen „Blindflug” zu machen.
Die folgende Tabelle ist so aufgebaut: In der linken Spalte sehen Sie die Verknüpfung zum Beitrag mit einem möglichst kurzem Namen, mittig steht eine knappe Beschreibung des Inhaltes und rechts ist das Datum der Veröffentlichung oder der letzten bedeutenden Aktualisierung vermerkt. In der Titelzeile der Tabelle können Sie die Sortiermöglichkeiten nutzen.