Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV mit Anführungszeichen und Komma

CSV mit Anführungszeichen und Komma
18.01.2021 14:45:13
Tamara
Hallo zusammen,
ich bin langsam am verzweifeln und am Rande meiner Kreativität was Google-Suchanfragen angeht.
Ich habe folgendes Problem:
Kunde fordert eine tägliche Auswertung als .csv Datei an. Dieser sitzt in Amerika und möchte daher gerne den Trenner als Komma haben und jeden Zellwert in doppelten Anführungszeichen.
Da die Auswertung täglich erstellt werden muss kommt eine Umstellung der Office Region eigentlich nicht in Frage, da dies andere Tätigkeiten negativ beeinflussen würde.
Ich habe nun ein Makro gefunden, welches mir die CSV wunderschön erstellt: http://www.excel-ist-sexy.de/csv-export-mit-anfuehrungsstrichen/
Möchte nicht so tun als wäre es mein Verdienst und die Domain ist klasse :D
Es funktioniert auch alles soweit, meine CSV sieht super aus.
Allerdings (bitte fragt mich nicht warum) wird die Datei nicht in Excel weiterbearbeitet sondern der Kunde öffnet diese in Notepad. Und dann sieht das ganze nicht so aus
Statt
"Wert1,"Wert2","Wert3","","Wert5"
Wird folgendes angezeigt:
"""Wert"",""Wert2"",""Wert3"","""",""Wert5"""
Egal was ich bisher angepasst und gedreht und gewendet habe, in Notepad kommen immer entweder 2-3 oder keine Anführungszeichen an.
Die einzige Lösung die ich bisher gefunden habe ist die Datei nachträglich nochmals in Notepad zu öffnen und die Anführungszeichen durch suchen und ersetzten zu reduzieren.
Gibt es hier eine schickere Lösung auf die ich bisher noch nicht gestoßen bin?
Danke schon mal für eure Hilfe :)
LG Tamara
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV mit Anführungszeichen und Komma
18.01.2021 15:00:42
Nepumuk
Hallo Tamara,
teste mal:
Option Explicit

Sub CSV_mit_Anfuehrungszeichen()
    Dim wks As Worksheet, Ze As Long, Sp As Long, ZeTmp As String
    Dim lCol As Long, lRow As Long, Frf As Long
    Dim Anf As String
    Const csvExport = "H:\csvExportSpezial.csv" 'Anpassen
    Const Trenner As String = "," 'Trenner für Spalten, kann angepasst werden
    Anf = Chr$(34)
    
    Frf = FreeFile
    Set wks = ThisWorkbook.Worksheets("Tabelle1") 'Anpassen: Register-Name
    lCol = wks.Cells(1, Columns.Count).End(xlToLeft).Column
    lRow = wks.Cells(Rows.Count, 1).End(xlUp).Row
    
    Open csvExport For Output As #Frf
    For Ze = 1 To lRow
        For Sp = 1 To lCol
            ZeTmp = ZeTmp & Trenner & Anf & CStr(wks.Cells(Ze, Sp).Text) & Anf
        Next Sp
        ZeTmp = Mid(ZeTmp, 2) 'Letztes Trennzeichen löschen
        Print #Frf, ZeTmp
        ZeTmp = ""
    Next Ze
    Close #Frf
End Sub

Gruß
Nepumuk
Anzeige
AW: CSV mit Anführungszeichen und Komma
18.01.2021 15:34:53
Tamara
Hi Nepumuk,
danke für die schnelle Rückmeldung!
Leider passiert hier genau das gleiche :(
Ich vermute stark, dass es an der Regionen Einstellung liegt.
Gibt es irgendeine Möglichkeit die Region über VBA nur für die Zeit der Ausführung umzustellen?
Ich verstehe auch nicht so richtig, warum die Excel Datei gut aussieht und es nur in Notepad falsch ist. Im Text-Editor kommen übrigens auch zu viele Anführungszeichen raus, das habe ich gerade auch mal getestet.
Danke & LG Tamara
Anzeige
AW: CSV mit Anführungszeichen und Komma
20.01.2021 15:32:44
Tamara
Hi Nepomuk,
jetzt funktioniert es gut, vielen Dank! :)
Ich hatte den Code zuvor etwas angepasst dabei ist wohl was schiefgelaufen.
Jetzt läuft es.
Eine letzte Frage hätte ich trotzdem noch:
Const csvExport = "C:\Test\csvExportSpezial.csv"

Mit diesem Teil gebe ich ja an, wo die Datei schon liegt, in der später mein Inhalt gespeichert werden soll.
Die spätere Datei soll allerdings immer einen Zeitstempel am Ende des Dateinamens bekommen.
Ich habe jetzt echt lange rumporbiert, aber wenn ich statt der Konstanten im Code eine Variable verwende bekomme ich ab hier einen Fehler:
Open csvExport For Output As #Frf

Wenn ich am Ende des Codes versuche die Datei einfach umzubenennen kommt der Fehler, dass die Datei bereits geöffnet ist.
Wo stehe ich auf dem Schlauch?
Danke & LG Tamara
Anzeige
AW: CSV mit Anführungszeichen und Komma
20.01.2021 15:41:23
Nepumuk
Hallo Tamara,
so ok?
Option Explicit

Sub CSV_mit_Anfuehrungszeichen()
    
    Dim wks As Worksheet, Ze As Long, Sp As Long, ZeTmp As String
    Dim lCol As Long, lRow As Long, Frf As Long
    Dim Anf As String, csvExport As String
    
    Const Trenner As String = "," 'Trenner für Spalten, kann angepasst werden
    
    Anf = Chr$(34)
    
    csvExport = "H:\csvExportSpezial" & Format$(Now, "yyyy.mm.dd_Hh-Nn-Ss") & ".csv"
    
    Frf = FreeFile
    Set wks = ThisWorkbook.Worksheets("Tabelle1") 'Anpassen: Register-Name
    lCol = wks.Cells(1, Columns.Count).End(xlToLeft).Column
    lRow = wks.Cells(Rows.Count, 1).End(xlUp).Row
    
    Open csvExport For Output As #Frf
    For Ze = 1 To lRow
        For Sp = 1 To lCol
            ZeTmp = ZeTmp & Trenner & Anf & CStr(wks.Cells(Ze, Sp).Text) & Anf
        Next Sp
        ZeTmp = Mid(ZeTmp, 2) 'Letztes Trennzeichen löschen
        Print #Frf, ZeTmp
        ZeTmp = ""
    Next Ze
    Close #Frf
End Sub

Gruß
Nepumuk
Anzeige
AW: CSV mit Anführungszeichen und Komma
25.01.2021 08:53:56
Tamara
Hi Nepomuk,
wenn ich das richtig sehe, hast du im Code "nur"
Const csvExport = "C:\Test\csvExportSpezial.csv"
Gegen

csvExport = "H:\csvExportSpezial" & Format$(Now, "yyyy.mm.dd_Hh-Nn-Ss") & ".csv"
ausgetauscht oder habe ich etwas anderes übersehen?
So habe ich es jedenfalls getestet und sobald der Pfad der csv-Datei nicht mehr als Konstante ans Makro übergeben wird, ist die erzeuget Datei später bei mir leer :(
Danke und LG Tamara
Anzeige
AW: CSV mit Anführungszeichen und Komma
25.01.2021 09:13:19
Nepumuk
Hallo Tamara,
kann ich nicht nachvollziehen. Hast du das versehentlich mit einer leeren Tabelle getestet? Hast du den Pfad angepasst? Hast du auch die richtige CSV (Datums und Zeitstempel) geöffnet?
Gruß
Nepumuk
AW: CSV mit Anführungszeichen und Komma
25.01.2021 11:58:30
Tamara
Hi Nepomuk,
Oh je, ich hatte einen kleinen Denkfehler - der Zeitstempel ändert sich in den letzten zwei Stellen ja logischerweise während der Ausführung des Makros.
Habs jetzt hinbekommen, alles sieht genau so aus wie es soll.
Vielen Dank für die tolle Hilfe! :)
Liebe Grüße
Tamara
Anzeige
AW: CSV mit Anführungszeichen und Komma
18.01.2021 16:15:53
ChrisL
Hi Tamara
Nur eine vage Vermutung.
Evtl. gibt es versteckte Zeichen z.B. Tab in den Excel-Rohdaten.
Teste mal mit =LÄNGE(A1) ob die Anzahl Zeichen mit deiner Anzeige übereinstimmt. Insbesondere deine leere Zelle zwischen Wert3 und Wert5 müsste 0 (null) ausgeben.
cu
Chris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

CSV mit Anführungszeichen und Komma


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei mit Anführungszeichen und Komma als Trennzeichen in Excel zu exportieren, kannst du das folgende VBA-Makro verwenden. Dieses Makro erstellt eine CSV-Datei, in der jeder Zellwert in doppelten Anführungszeichen gesetzt wird.

Option Explicit

Sub CSV_mit_Anfuehrungszeichen()
    Dim wks As Worksheet, Ze As Long, Sp As Long, ZeTmp As String
    Dim lCol As Long, lRow As Long, Frf As Long
    Dim Anf As String
    Const csvExport = "H:\csvExportSpezial.csv" 'Anpassen
    Const Trenner As String = "," 'Trenner für Spalten, kann angepasst werden
    Anf = Chr$(34)

    Frf = FreeFile
    Set wks = ThisWorkbook.Worksheets("Tabelle1") 'Anpassen: Register-Name
    lCol = wks.Cells(1, Columns.Count).End(xlToLeft).Column
    lRow = wks.Cells(Rows.Count, 1).End(xlUp).Row

    Open csvExport For Output As #Frf
    For Ze = 1 To lRow
        For Sp = 1 To lCol
            ZeTmp = ZeTmp & Trenner & Anf & CStr(wks.Cells(Ze, Sp).Text) & Anf
        Next Sp
        ZeTmp = Mid(ZeTmp, 2) 'Letztes Trennzeichen löschen
        Print #Frf, ZeTmp
        ZeTmp = ""
    Next Ze
    Close #Frf
End Sub

Häufige Fehler und Lösungen

  1. Zuviele Anführungszeichen in Notepad: Wenn du die CSV-Datei in Notepad öffnest und siehst, dass mehr Anführungszeichen vorhanden sind als erwartet, könnte das an der Excel-Regionseinstellung liegen. Teste, ob das Makro in einer anderen Excel-Region korrekt funktioniert.

  2. Leere CSV-Dateien: Wenn die generierte CSV-Datei leer ist, überprüfe, ob der Pfad zur Datei korrekt ist und ob du die richtige Tabelle ausgewählt hast, aus der die Daten exportiert werden sollen.

  3. Fehler beim Öffnen der Datei: Wenn der Fehler auftritt, dass die Datei bereits geöffnet ist, stelle sicher, dass du die Datei nach dem Schreiben schließt, bevor du sie erneut öffnest oder umbenennst.


Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du die Daten auch manuell in Excel vorbereiten und dann mit der „Speichern unter“-Funktion als CSV exportieren. Achte darauf, dass du die Excel-Optionen so einstellst, dass Anführungszeichen um Textwerte gesetzt werden.

Ein Beispiel für die manuelle Methode:

  1. Markiere die Zellen, die exportiert werden sollen.
  2. Füge eine neue Spalte hinzu, in der du die Formel =""""&A1&"""" verwendest, um Anführungszeichen um den Zellinhalt zu setzen.
  3. Kopiere die neue Spalte und füge sie als Werte in eine neue Tabelle ein.
  4. Speichere die Datei als CSV.

Praktische Beispiele

Ein Beispiel für einen erfolgreichen CSV-Export mit Anführungszeichen und Komma:

  • Ursprüngliche Daten in Excel:

    • Wert1
    • Wert2
    • Wert3
    • Wert4
    • Wert5
  • Exportierte CSV-Datei:

    "Wert1","Wert2","Wert3","","Wert5"

Du kannst auch weitere Anpassungen vornehmen, um mit unterschiedlichen Trennzeichen zu arbeiten, indem du die Const Trenner-Zeile im VBA-Code änderst.


Tipps für Profis

  • Experimentiere mit der Format-Funktion, um Zeitstempel oder andere benutzerdefinierte Formate in den Dateinamen einzufügen.
  • Nutze die Application.WorksheetFunction-Methoden, um Daten vor dem Export zu validieren, z.B. mit =LÄNGE(A1) um sicherzustellen, dass du keine versteckten Zeichen in den Daten hast.
  • Wenn du regelmäßig CSV-Dateien exportierst, erwäge die Automatisierung des Prozesses mit einem Timer oder Trigger in VBA.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass alle Zellwerte in Anführungszeichen gesetzt werden? Nutze das VBA-Makro, das speziell dafür entworfen wurde, jeden Zellwert in Anführungszeichen zu setzen.

2. Was mache ich, wenn die CSV-Datei nicht die gewünschten Daten enthält? Überprüfe den Pfad zur Datei und stelle sicher, dass die richtige Arbeitsmappe sowie die richtigen Zellen ausgewählt sind.

3. Ist es möglich, die Regionseinstellungen temporär zu ändern? Ja, du kannst die Regionseinstellungen über VBA temporär ändern, jedoch erfordert dies zusätzliche Programmierung und eine sorgfältige Handhabung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige