Eine CSV-Datei ist ein gängiges Format um Daten zu exportieren und zu importieren. Diese Anleitung soll zeigen, wie mit einem VBA Makro eine CSV-Datei in eine bestehende Excel-Datei in ein separates Tabellenblatt importiert wird. Wird eine CSV-Datei mit Excel ganz normal geöffnet, wird immer eine neue Arbeitsmappe geöffnet und die Werte aus der Datei anhand des Trennzeichens entsprechend in ein leeres Tabellenblatt importiert. Das hat zur Folge, dass immer zwei Dateien offen sind. Dieses wollen wir aber nicht, denn das Ziel soll es sein, die CSV-Datei zu importieren und dann gleich die Daten weiter verarbeiten zu können. Um jetzt die CSV-Datei in automatisiert in eine Excel Datei importieren zu können, müssen ein paar kleine Änderungen an Deiner Excel Datei durchgeführt werden.
Als erstes müssen wir ein neues Module im Visual Basic Editor anlegen, wenn noch keines vorhanden ist. Sollte schon ein Module vorhanden sein, so kannst Du auch ein bestehendes Module nutzen. Füge den folgenden Quelltext an das Ende des Moduls ein :
Sub ImportCSV(Dateiname, ZielTabelle As String) Dim Ws As Worksheet Set Ws = ActiveWorkbook.Sheets(ZielTabelle) If Dateiname <> False Then Application.ScreenUpdating = False Workbooks.Open Filename:=Dateiname, Local:=True ActiveSheet.UsedRange.Copy Ws.Cells(1) ActiveWorkbook.Close SaveChanges:=False Application.ScreenUpdating = True End If End Sub
Mit dieser Funktion ist es aber nicht alleine getan, denn das Makro weiß ja nichts damit anzufangen. Du musst noch eine zweite Funktion schreiben, die die Funktion ImportCSV mit den entsprechenden Parametern aufruft. Diese Funktion könnte zum Beispiel so aussehen :
Sub StartImportCSV() ImportCSV "C:\Test\Testdaten.csv", "CSV Import" Application.CalculateFull End Sub
Die Funktion StartImportCSV ruft als erstes die Funktion ImportCSV auf mit den folgenden Parametern :
- C:\Test\Testdaten.csv
- CSV Import
Der erste Parameter ist die CSV-Datei inkl. Verzeichnis welche die neuen Daten enthält. Der zweite Parameter ist das Tabellenblatt in der aktuellen Excel Datei, wo die Daten rein importiert werden sollen. Die Funktion ImportCSV stellt die Daten aus der CSV-Datei in dem Tabellenblatt CSV Import zur Verfügung. Der zweite Befehl in der Funktion StartImportCSV berechnet dann die komplette Excel-Datei neu. Das würde heißen, wenn aus anderen Tabellenblätter auf das Tabellenblatt CSV-Import zugegriffen wird, werden alle Formeln neu berechnet mit den aktuell importierten Werten.