CSV am Ende einer Exceltabelle einfügen?
Hi,
folgendes Szenario: Ich bekomme in unterschiedlichen Zeitabständen CSV Dateien die ich in Excel importieren möchte. An sich ist das ja kein Problem. Jedoch möchte ich den ganzen Schritt automatisieren und die Daten der CSV an das Ende einer formatierten Tabelle setzen. Hat folgenden Hintergrund: Ich möchte über die Daten der CSV Dateien mehrere Auswertungen laufen lassen. Diese müssen nur einmal angelegt werden und danach immer über alle Daten aus allen CSVs laufen. Die Daten aus den CSV Dateien werden einmalig Importiert, also sind keine Dateiverbindungen nötig. Mein erster Gedankengang war ein Excelsheet "Import" in welches ich die Daten lade und dann per Makro ans ende der Tabelle schiebe. Doch da war mein Problem ein VBA-Skript zu schreiben welches immer an die nächste freie Stelle die Daten kopiert. Eventuell gibt es ja auch eine einfachere Lösung und ich finde Sie nicht. Ich habe Excel2016 im Einsatz und keine Einschränkungen in Sachen Makros. Zudem ist es eine 64bit Version welches die Verarbeitung großer Makros relativ zügig funktioniert.
Vielen Dank im Voraus für alle Antworten
Grüße
2 Antworten

Die letzte belegte Zelle einer Tabelle erhältst du mit
Tabelle.Cells.SpecialCells(xlLastCell)
Leider berücksichtigt Excel nicht, wenn Bereiche gelöscht werden, sodass eine einmal belegte Zeile immer in die Zeile der letzten Zelle eingeht, ebenso für die Spalten.
Immerhin kann man die Zeilen durchgehen und nachsehen, ob etwas darin steht.
Du könntest z. B. die Daten aus der Importtabelle in die Sammeltabelle wie folgt kopieren:
Range(Importtabelle.Cells(1,1), Importtabelle.Cells.SpecialCells(xlLastCell)).Copy(Sammeltabelle.Cells(Sammeltabelle.SpecialCells(xlLastCell).Row+1,1))

"ans Ende der Tabelle": Wenn du die Spalte kennst (hier A), bekommst Du die letzte Zelle angesteuert mit
Range("A1048576").end(xlup)
und die erste freie mit
Range("A1048576").end(xlup).offset(1., 0)
Das ist sicherer als Range("A1").end(xldown), da freie Zellen diesen Vorgang stören würden.
ist die letzte Zelle in einer unbekannten Spalte, muss man das zB so machen wie P.Wolff das beschreibt, aber dann noch die erste Spalte und die Zelle darunter ansteuern, denn Du willst die CSV-Datei ja nicht an die letzte Zelle selbst anhängen, nehme ich an, zB mit
Tabelle.Cells.SpecialCells(xlLastCell)
.offset(1, 0).end(xltoleft)