Logo faq-o-matic.net
Logo faq-o-matic.net

Excel-Daten in echtes CSV exportieren

von veröffentlicht am17. Februar 2003, 16:23 Uhr Kurzlink http://faq-o-matic.net/?p=653 Zitatlink
Kategorie Kategorie: Downloads, Excel, Office   Translate with Microsoft Translator Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 20. November 2012

Die Bearbeitung einer CSV-Datei mit Excel ist keine Freude. Excel lässt sich nicht ohne größere Klimmzüge überreden, als Trennzeichen ein Komma zu verwenden und Einträge, die selbst ein Komma enthalten, in Anführungszeichen zu setzen. Dies ist aber notwendig, wenn man die CSV-Datei mit anderen Programmen verwenden will.

Eine – etwas umständliche – Möglichkeit besteht darin, vor dem Export die Windows-Spracheinstellungen auf "USA" umzustellen. Dann muss Excel neu gestartet werden, und nun speichert es CSV auch mit Kommas. Danach sollte man die Spracheinstellung aber wieder zurücksetzen. Machbar, aber nicht besonders praktisch.

Als kleinen Workaround habe ich mir ein Excel-Makro gebastelt. Man kann es in Excel einbinden, indem man den Text als Datei mit der Erweiterung ".bas" abspeichert, dann in Excel mit Alt-F11 den VB-Editor aufruft und dort über "Datei – Importieren" die eben gespeicherte Datei einbindet. Dann kann der VB-Editor geschlossen werden. Wenn man nun eine Tabelle als CSV exportieren möchte, ruft man auf "Extras – Makros – SaveCSV".

Das Verfahren funktioniert auch in Excel 2007 – hier muss man aber erst das Entwickler-Ribbon einbinden, damit die Makros überhaupt sichtbar sind. Dazu über das Office-Menü die Excel-Optionen aufrufen und unter Häufig verwendet die Option Entwicklerregisterkarte in der Multifunktionsleiste anzeigen aktivieren.

Sub SaveCSV()
' Speichert den Inhalt eines Arbeitsblatts als CSV-Datei
' mit wählbarem Trennzeichen und Maskierung von Einträgen
' von Nils Kaczenski (Vorname at nachname .de), 30.1.2003
' Ohne Gewähr! 

Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String 

strMappenpfad = ActiveWorkbook.FullName
strMappenpfad = Replace(strMappenpfad, ".xls", ".csv") 

strDateiname = InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", "CSV-Export", strMappenpfad)
If strDateiname = "" Then Exit Sub 

strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
If strTrennzeichen = "" Then Exit Sub 

  Set Bereich = ActiveSheet.UsedRange 

  Open strDateiname For Output As #1 

  For Each Zeile In Bereich.Rows
    For Each Zelle In Zeile.Cells
      If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
        'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
        strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
      Else
        strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
      End If
    Next
    If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
    Print #1, strTemp
    strTemp = ""
  Next 

  Close #1
  Set Bereich = Nothing
  MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname 

End Sub

Man kann dieses Makro auch in ein sog. Excel-Add-in übernehmen, damit es immer zur Verfügung steht. Über den folgenden Link kann man ein solches Add-in herunterladen. Es muss unter C:\Dokumente und Einstellungen\<Username>\Anwendungsdaten\Microsoft\AddIns gespeichert werden. Dann kann mit Strg-Shift-X das Makro aufgerufen werden.

Hier der Download:

Download: Excel-Add-in: CSV-Export  Excel-Add-in: CSV-Export (8,5 KiB, 9.509 hits)

Und hier eine neue Fassung des Add-ins für Excel 2007 und neuer (von unserem Leser Philipp Lang):

Download: SaveCSV-XL-2010  SaveCSV-XL-2010 (13,4 KiB, 2.275 hits)

 

© 2005-2014 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!