Wer schon einmal ein bisschen mit Office 2007 rumgespielt hat wird wissen das Excel standardmäßig in der Lage ist, Tabellen im .csv-Format abzuspeichern. Allerdings ist das von Excel verwendete .csv-Format nicht unbedingt das Gängiste. Of werden CSV-Daten wie folgt ausgelesen:
Beispiel 1:
"Z1Spalte1","Z1Spalte2","Z1Spalte3"
"Z2Spalte1","Z2Spalte2","Z2Spalte3"
wird interpretiert als Tabelle die so aussieht:
| Z1Spalte1 | Z1Spalte2 | Z1Spalte3 |
| Z2Spalte1 | Z2Spalte2 | Z2Spalte3 |
Wie funktioniert das?
Die Scripte die CSV-Dateien auslesen erkennen bestimmte Merkmale einer CSV-Datei. das Komma (,) trennt die Spalten von einander. Die Anführungszeichen (" ") Zeigen die Daten an, welche in den Zellen stehen sollen. Steht hinter einer der Daten kein Komma mehr, so weiß das Script dass das Ende der Zeile erreicht ist. Gibt es noch nicht 'bearbeitete Einträge' in der CSV-Datei so stehen diese in mindestens einer neue Zeile.
Das Problem ist dass Excel CSV-Dateien nach folgendem Prinzip abspeichert:
Beispiel 2:
Z1Spalte1;Z1Spalte2;Z1Spalte3
Z2Spalte1;Z2Spalte2;Z2Spalte3
Oft bieten die Scripte eine Möglichkeit, das 'Trennzeichen' (Oberes Bsp. (,) Unteres Bsp. (;)) zu ändern. Das Problem liegt viel mehr bei den Anführungszeichen. Da Excel CSV-Dateien ohne Anführungsstriche abspeichert, wissen viele Scripte nicht was sie als Daten interpretieren und in die Zellen der Tabelle schreiben sollen.
Hat man jetzt eine große CSV-Datei mit vielen Zeilen und Spalten wäre der Aufwand die Anführungszeichen von Hand nach zu tragen enorm. Wesentlich einfacher geht das mit einem Virtual Basic Script, welches Excel dazu auffordert, die (;)-Trennzeichen durch ein (,)-Trennzeichen zu ersetzen, und die Daten in Anführungszeichen zu setzen.
Das geht wie folgt:
1. Als erstes öffnet ihr eure Excel Tabelle (.xls, xlsx, ...) die ihr im .csv-Format abspeichern wollt.
2. Ihr makiert in der geöffneten Tabelle alle Zellen, die später in der CSV-Datei vorhanden sein sollen
3. Jetzt drückt ihr ALT+F11 (damit öffnet sich der Virtual Basic editor)
4. Als nächstes fügt ihr mit "Einfügen" ---> "Modul" (oben in der Leiste) ein neues Modul hinzu
5. In das leere weiße Fenster was nun erscheint müsst ihr folgenden Quellcode rein kopieren:
6. Mit der F5-Taste die SubForm ausführen
Dann erscheint ein PopUp in welchem ihr den Speicherpfad sowie den Dateinamen eurer CSV-Datei angeben müsst. (Also wo hin ihr speichern wollt und wie die Datei heißen soll z.B. C:\Datei.csv)
Wenn ihr jetzt eure Datei öffnet werdet ihr sehen das Exel die CSV-Datei wie in Bsp.1 abgespeichert hat (mit (,) und (")).
Wenn ihr eure Excel Tabelle ständig aktualisieren wollt, und nicht jedes mal die Schritte 1-6 wiederholen wollt, dann speichert sie einfach als .xlsm ab. XLSM-Dateien sind Excel-Arbeitsmappen mit Makrounterstützung. Dann müsst ihr beim nächsten öffnen eurer Exel-Tabelle (.xlsm) nur noch eure Änderungen vornehmen, ALT+F11 gefolgt von F5 drücken, und den Speicherpfad sowie Dateinamen (s.o.) angeben.
Das geht doch definitiv schneller als 600 Einträge von Hand mit Anführungszeichen zu versehen :)
Ben
Geschrieben am 2008-09-29 00:27:07
Stefan
Geschrieben am 2008-09-25 20:51:06
Hatt super funktioniert- VIELEN DANK
Aktuell sind 4 Gäste und keine Mitglieder online
m0nk3y
Geschrieben am 2008-10-14 19:10:19
Gern geschehen :)