Excel CSV-Export mit Anführungszeichen
von Gaby Salvisberg 03.01.2012
Quelle: http://www.pctipp.ch/tipps-tricks/kummerkasten/office/artikel/excel-2010-csv-export-mit-anfuehrungszeichen-59568/
Ausgangssituation: Der exportierte Text soll in einer CSV Anführungszeichen beinhalten.
Ich exportiere aus Excel eine Liste ins CSV-Format comma-separated values. Das Zielsystem, auf dem die Liste wieder importiert werden muss, kommt mit dem von Excel erstellten CSV-Format nicht zurecht. Es fehlen die Anführungs- und Schlusszeichen als Feldbegrenzungen (z.B. „Feld“).
Anmerkung: Irgendwie ist es auch der umgekehrte Text-in-Spalten Funktion. Aber egal.
Gibt es einen Weg, die Daten auf diese Weise aus Excel in eine CSV-Datei zu kriegen?
Lösung: Ein kleines Makro programmieren
Mit dem gewöhnlichen Export-Assistenten bzw. «Speichern unter» in Excel geht das nicht. Sie bekommen es aber mit einem Makro hin.
So könnte Ihre Beispiel-Liste in Excel aussehen:
ID | Pos | ArtNr | ME | Menge |
4711 | 1 | iPhone12 | Stk | 3 |
4712 | 2 | iPadPro2021 | Stk | 2 |
4713 | 3 | MacBookM1 | Stk | 4 |
Was Excel beim CSV-Export normalerweise damit anstellt, ist dies – ohne die Anführungs- und Schlusszeichen, wie Sie richtig feststellen :
ID;Pos;ArtNr;ME;Menge 4711;1;iPhone12;Stk;3 4712;2;iPadPro2021;Stk;2 4713;3;MacBookM1;Stk;4
Alle zufälligen Anführungszeichen aus der Tabelle vorher entfernen
Durchsuchen Sie Ihre Tabelle zuerst nach dem Anführungszeichen („). Dieses wird später in der CSV-Datei als Feldtrenner eingesetzt. Wenn innerhalb einer Zelle schon jetzt ein solches Zeichen vorkäme (z.B. bei Zoll-Angaben wie «2,5″»), könnte das später beim Import zu Verwirrungen führen. Ersetzen Sie das Zeichen allenfalls durch Text oder eine Zeichenfolge, die Sie nach erfolgtem Export wieder zurück-ersetzen.
Das Makro
Drücken Sie Alt+F11 zum Öffnen des Visual-Basic-Editors oder gehen Sie im Reiter Entwicklertools zu Visual Basic. Falls die Entwicklertools nicht zu sehen sind, blenden Sie sie ein: Es geht über Datei / Optionen / Menüband anpassen, dann haken Sie rechts die «Entwicklertools» an.
Doppelklicken Sie im Visual-Basic-Editor auf Diese Arbeitsmappe und fügen Sie exakt folgenden Makrocode ein, den Sie auch von hier kopieren können:
Sub CSVFile() Dim SrcRg As Range Dim CurrRow As Range Dim CurrCell As Range Dim CurrTextStr As String Dim ListSep As String Dim FName As Variant FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv") ListSep = Application.International(xlListSeparator) If Selection.Cells.Count > 1 Then Set SrcRg = Selection Else Set SrcRg = ActiveSheet.UsedRange End If Open FName For Output As #1 For Each CurrRow In SrcRg.Rows CurrTextStr = ìî For Each CurrCell In CurrRow.Cells CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep Next While Right(CurrTextStr, 1) = ListSep CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1) Wend Print #1, CurrTextStr Next Close #1 End Sub
Gehen Sie zu Datei / Schließen und zurück zu Excel. Drücken Sie Alt+F8 oder gehen Sie via Entwicklertools zu Makros. Jetzt noch auf das «CSVFile»-Makro und auf Ausführen klicken. Excel zeigt einen «Speichern unter»-Dialog an, in dem Sie einen Dateinamen (z.B. «MeineListe.csv») eingeben und einen Speicherort wählen. Die so erstellte CSV-Datei enthält als Feldbegrenzer jetzt die Anführungszeichen.
"ID";"Pos";"ArtNr";"ME";"Menge" "4711";"1";"iPhone12";"Stk";"3" "4712";"2";"iPadPro2021";"Stk";"2" "4713";"3";"MacBookM1";"Stk";"4"
Speichern als .XLSM statt .XLSX
Wenn Sie Ihre ursprüngliche Excel-Datei schließen, müssen Sie sich entscheiden, ob Sie das Makro in dieser Excel-Datei behalten wollen oder nicht. Falls es in der Datei bleiben soll, müssen Sie sie unter dem Dateityp .xlsm statt .xlsx speichern.
Wenn Sie weitere Fragen, dann rufen Sie uns an. Wir helfen gerne bei Excel Fragen und darüber hinaus. Bei uns Netzleiter können Sie alle hier aufgeführten Microsoft Produkte kaufen. Sie profitieren von unserem Partnerstatus dadurch, dass Sie die Rabatte des jährlichen Abos erhalten und trotzdem monatlich kündigen können. Microsoft 365 ist bei uns monatlich kündbar und erfühlen somit unser Ziel alle Abos als monatlich kündbares Abonnement anzubieten. Netzleiter: flexibel, skalierbar und sicher! |