Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV mit Anführungszeichen bei Texten

CSV mit Anführungszeichen bei Texten
09.12.2022 13:50:17
Dominik
Hallo zusammen,
ich bin leider ein wenig am verzweifeln und komme nicht wirklich weiter. Habe mich dumm und dusselig gegoogelt aber auch irgendwelche Makros durch die ich nicht durchgestiegen bin haben mir wenig geholfen. Als Info, ich benutze Office365 Business (Excel Desktop App natürlich).
Nun benötige ich Hilfe bei der Umsetzung folgendes Problems.
Folgendes Szenario:
Wir bekommen von einem Kunden eine Liste, diese Liste muss dann als CSV im UTF-8 Format gespeichert werden.
Jetzt kommt der Clue. In dieser Liste sind Zahlen, Datumsangaben und Texte, damit das WMS (Warenwirtschaftssystem) das am Ende diese Datei verarbeiten soll, die Daten richtig auslesen kann, müssen alle Textwerte mit "" versehen werden und Zahlenformate sowie Datumsformat ohne "".
Wenn ich die Datei in Notepad öffne sollte es folgenderweise aussehen:
"Line Status","Picking Ticket No","SOLine","Warehouse","Item Code", (usw)
"SHIP",517659,1,"PLWHSE","F5_SL713_DKY", (usw)
Ich habe in der angehängten Excel Datei "test inbound file generator" im Tab "transform to csv" die Spaltenüberschriften Rot markiert, wo die Daten als Text formatiert sind und somit mit "" versehen werden müssen. Die Überschriften müssen immer als Text formatiert sein unabhängig von den Daten die darunter folgen.
Ich hoffe ich habe mein Problem gut genug dargestellt und das mir vielleicht jemand helfen kann.
Zu speichernde CSV Datei:
https://www.herber.de/bbs/user/156624.xlsx
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV mit Anführungszeichen bei Texten
09.12.2022 13:53:59
Dominik
Vergessen zu erwähnen, die Daten müssen durch ein , und nicht durch ; getrennt werden.
Das Problem habe ich für den Moment umschifft indem ich die Regioneinstellung auf US gestellt habe.
Wenn es dafür eine bessere Lösung gibt, ebenfalls gerne her damit.
AW: sehe keine rot markierten Spalten owT
09.12.2022 14:09:21
neopa
Gruß Werner
.. , - ...
AW: sehe keine rot markierten Spalten owT
09.12.2022 14:13:16
Dominik
Hm, weiß nicht wieso es nicht in übernommen wurde in der Datei.
Es geht um folgende Spalten die "rot" markiert waren und die Daten als Text formatiert sein sollen.
Spalten: A, D, E, F, G, H, I, L, M, N, Q, R, U, V, W, X, AC
Anzeige
AW: nun noch nachgefragt ...
09.12.2022 14:20:54
neopa
Hallo Dominik,
... wie sollen denn die 0-Datenwerte (z.B. die in der Spalte I) ausgegeben werden?
Gruß Werner
.. , - ...
AW: nun noch nachgefragt ...
09.12.2022 14:29:20
Dominik
In Spalte I, die Text ist, sollte dann auch die "0" ein Text sein.
In Spalte J, die eine Zahl ist, sollte dann die 0 eine Zahl sein.
Wenn die Zelle leer ist, muss je nachdem ob Text ist per ,"", getrennt werden oder bei Zahlenformat ,,
Ich hoffe ich habe es verständlich genug ausgedrückt :D
Anzeige
AW: hmmm ...
09.12.2022 15:04:34
neopa
Hallo Dominik,
... sorry, erkenne erst jetzt richtig das Problem.
Weder mit Formeln noch mit PQ gelingt es mir momentan auch nicht ein " vor und nach einen Textwert hinzu zufügen. Sollte zwar trotzdem möglich sein. Ich würde mir da wie folgt helfen. Anstelle eines " würde ich z.B.: # (bzw. ein Zeichen was ansonsten in Deinen Original nicht vorkommt) den Textwerten hinzufügen. Danach diese Datei in CSV -Datei ausgeben und dort mit einem Standardeditor das # durch ein " ersetzen. Ist zwar umständlich aber zumindest eine Möglichkeit.
Mit VBA sollte es jedoch einfacher möglich sein. Doch mit VBA beschäftige ich mich nicht. Ein VBAler könnte Dir hier sicherlich eine bessere Hilfe sein.
Gruß Werner
.. , - ...
Anzeige
AW: CSV mit Anführungszeichen bei Texten
09.12.2022 15:09:35
ChrisL
Hi Dominik
Die Lösung kommt ohne Zusatztabelle aus.
Kleiner Unklarheiten gibt es noch u.a. ob Datum als Text oder Zahl behandelt werden soll. Aber schau einfach mal ob es passt.

Sub t()
Dim arSpaltenTitel() As Variant
Dim lngZeile As Long, i As Integer
Dim strTemp As String
arSpaltenTitel = Array("Line Status", "Picking Ticket No", "SOLine", "Warehouse", "Item Code", "Description", "Colour", _
"Description", "Fit/Dim", "md3", "md5", "Lading Note Number", "Size Code", "Brand Code", "Unit Qty", "EANUPC", "Customer Code", _
"CustName", "PKQTY", "SELLQ", "Container Code", "Container Type", "Shipping Ref", "Deliver To Comp", "TODAYS", "SHIP date", _
"Completion Date", "PO date", "CLRSEAS")
Open "C:\Pfad\DemoFile.csv" For Output As #1
With Tabelle1
'Spaltentitel schreiben
Print #1, """" & Join(arSpaltenTitel, """,""") & """"
For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To UBound(arSpaltenTitel) + 1
Select Case i
' erste Spalte ohne Komma
Case 1: strTemp = """" & .Cells(lngZeile, i) & """"
' Ausnahme Spaltennummer mit Text ignore
Case 12, 22, 24, 29: strTemp = strTemp & ",""ignore"""
' Spalten mit Datumsformatierung
Case 25, 26, 27: strTemp = strTemp & ",""" & Format(.Cells(lngZeile, i), "dd\/mm\/yyyy") & """"
' Ausnahme Spalte AB, welche den Wert von AA bekommt
Case 28: strTemp = strTemp & ",""" & Format(.Cells(lngZeile, 27), "dd\/mm\/yyyy") & """"
' restliche Spalten
Case Else
' wenn nummerisch
If IsNumeric(.Cells(lngZeile, i)) And .Cells(lngZeile, i)  "" Then
strTemp = strTemp & "," & .Cells(lngZeile, i).Text
' wenn text
Else
strTemp = strTemp & ",""" & .Cells(lngZeile, i).Text & """"
End If
End Select
Next i
Print #1, strTemp
Next lngZeile
End With
Close #1
End Sub
cu
Chris
Anzeige
AW: CSV mit Anführungszeichen bei Texten
09.12.2022 15:39:21
Dominik
Hi Chris,
das sieht erstmal richtig gut aus. Ich würde hier intern Rücksprache halten und mich ggfs nochmal melden.
Danke aber bis hierher schonmal!
AW: CSV mit Anführungszeichen bei Texten
12.12.2022 08:01:53
Dominik
Hi Chris,
was müsste ich im Modul ändern damit das Datum nicht mehr in Anführungszeichen gesetzt wird?
AW: CSV mit Anführungszeichen bei Texten
12.12.2022 08:34:52
Dominik
Und die Spalte "Completion Date" wird rausfliegen. Wie könnte ich diese ebenfalls entfernen?
Anzeige
AW: CSV mit Anführungszeichen bei Texten
12.12.2022 09:01:23
ChrisL
Hi
Nachfolgend mal die Anpassung betr. Datum.
Den Spaltentitel löschen und dann die Spaltennummern im Code anpassen. Verschiebt sich halt alles und du müsstest die Nummern anpassen.

Sub t()
Dim arSpaltenTitel() As Variant
Dim lngZeile As Long, i As Integer
Dim strTemp As String
arSpaltenTitel = Array("Line Status", "Picking Ticket No", "SOLine", "Warehouse", "Item Code", "Description", "Colour", _
"Description", "Fit/Dim", "md3", "md5", "Lading Note Number", "Size Code", "Brand Code", "Unit Qty", "EANUPC", "Customer Code", _
"CustName", "PKQTY", "SELLQ", "Container Code", "Container Type", "Shipping Ref", "Deliver To Comp", "TODAYS", "SHIP date", _
"Completion Date", "PO date", "CLRSEAS")
Open "C:\Pfad\DemoFile.csv" For Output As #1
With Tabelle1
'Spaltentitel schreiben
Print #1, """" & Join(arSpaltenTitel, """,""") & """"
For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To UBound(arSpaltenTitel) + 1
Select Case i
' erste Spalte ohne Komma
Case 1: strTemp = """" & .Cells(lngZeile, i) & """"
' Ausnahme Spaltennummer mit Text ignore
Case 12, 22, 24, 29: strTemp = strTemp & ",""ignore"""
' Spalten mit Datumsformatierung
Case 25, 26, 27: strTemp = strTemp & "," & Format(.Cells(lngZeile, i), "dd\/mm\/yyyy")
' Ausnahme Spalte AB, welche den Wert von AA bekommt
Case 28: strTemp = strTemp & "," & Format(.Cells(lngZeile, 27), "dd\/mm\/yyyy")
' restliche Spalten
Case Else
' wenn nummerisch
If IsNumeric(.Cells(lngZeile, i)) And .Cells(lngZeile, i)  "" Then
strTemp = strTemp & "," & .Cells(lngZeile, i).Text
' wenn text
Else
strTemp = strTemp & ",""" & .Cells(lngZeile, i).Text & """"
End If
End Select
Next i
Print #1, strTemp
Next lngZeile
End With
Close #1
End Sub
cu
Chris
Anzeige
AW: CSV mit Anführungszeichen bei Texten
12.12.2022 10:53:33
Dominik
Klasse, habs hinbekommen. Ich danke dir vielmals!!
AW: CSV mit Anführungszeichen bei Texten
09.12.2022 15:17:23
Daniel
Hi
ich würde mir hier für den CSV-Export über Textverketten bzw einfaches & und TEXT per Formel die Daten einer Zeile in Spalte A zusammensammeln und dieses Blatt mit der einen Spalte dann als CSV speichern.
solange also kein Datum und keine Dezimalzahlen vorkommen, kannst du so eine Zeile zu einem Text zusammenführen.

=Textverketten(",";falsch;Wenn(Isttext(Tabelle1!A2:X2;""""&Tabelle1!A2:X2&"""";Tabelle2!A2:X2)) 
wenn dann Datumswerte folgen, bindest du die so an:

=Textverketten(...)&","&Textverketten(",";falsch;Text(Tabelle1!X2:AB2; "--hier der Formatstring für dein Datum---")) 
und so weiter halt für weitere Spalten mit speziellen formaten.
So kannst du dann selber bestimmen, wie der Text ausgegeben wird (Trennzeichen, mit/ohne AnfZ., Datumsschreibweise) und bist nicht von den Einstellungen oder Automatiken deines Excels abhängig.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

CSV mit Anführungszeichen bei Texten


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass die Spalten, die als Texte exportiert werden sollen, in Excel entsprechend formatiert sind. Markiere diese Spalten rot oder verwende eine andere Farbe, um sie hervorzuheben.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul erstellen: Klicke auf Einfügen, dann auf Modul, um ein neues Modul hinzuzufügen.

  4. Code einfügen: Kopiere den folgenden VBA-Code in das neue Modul:

    Sub ExportCSV()
       Dim arSpaltenTitel() As Variant
       Dim lngZeile As Long, i As Integer
       Dim strTemp As String
       arSpaltenTitel = Array("Line Status", "Picking Ticket No", "SOLine", "Warehouse", "Item Code", "Description", "Colour")
       Open "C:\Pfad\DemoFile.csv" For Output As #1
       With Tabelle1
           Print #1, """" & Join(arSpaltenTitel, """,""") & """"
           For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
               For i = 1 To UBound(arSpaltenTitel) + 1
                   Select Case i
                       Case 1: strTemp = """" & .Cells(lngZeile, i) & """"
                       Case Else
                           If IsNumeric(.Cells(lngZeile, i)) Then
                               strTemp = strTemp & "," & .Cells(lngZeile, i).Text
                           Else
                               strTemp = strTemp & ",""" & .Cells(lngZeile, i).Text & """"
                           End If
                   End Select
               Next i
               Print #1, strTemp
           Next lngZeile
       End With
       Close #1
    End Sub
  5. Pfad anpassen: Ändere den Pfad in Open "C:\Pfad\DemoFile.csv" zu dem gewünschten Speicherort.

  6. Makro ausführen: Drücke F5, um das Makro auszuführen. Die CSV-Datei wird nun erstellt, wobei die Texte in Anführungszeichen stehen.


Häufige Fehler und Lösungen

  • Fehler: Die Anführungszeichen fehlen für Texte.

    • Lösung: Überprüfe den VBA-Code und stelle sicher, dass in dem Code die Textwerte korrekt umschlossen sind.
  • Fehler: CSV-Datei wird mit falschem Trennzeichen gespeichert.

    • Lösung: Stelle sicher, dass in den Regionseinstellungen das gewünschte Trennzeichen (z.B. Komma) eingestellt ist.
  • Fehler: Excel exportiert die Daten nicht im UTF-8 Format.

    • Lösung: Achte darauf, dass du beim Speichern die richtige Codierung wählst oder nutze ein Tool, das dies unterstützt.

Alternative Methoden

  • PowerShell verwenden: Du kannst auch PowerShell nutzen, um CSV-Dateien ohne Anführungszeichen zu exportieren. Beispiel:

    Export-Csv -Path "C:\Pfad\DemoFile.csv" -NoTypeInformation -Delimiter ',' -Encoding UTF8
  • Formel-basierter Ansatz: Verwende die TEXTVERKETTEN-Funktion in Excel, um Daten zu einem einzigen Textstring zusammenzufügen, und speichere diesen anschließend als CSV.


Praktische Beispiele

  • Beispiel 1: Exportiere eine Liste mit Anführungszeichen um Textwerte:

    Line Status Picking Ticket No Item Code
    "SHIP" 517659 "F5_SL713_DKY"
  • Beispiel 2: Verwende die Funktion TEXTVERKETTEN für eine Zeile:

    =TEXTVERKETTEN(","; FALSCH; WENN(ISTTEXT(A2:C2); """" & A2:C2 & """"; A2:C2))

Tipps für Profis

  • Makros automatisieren: Du kannst das Makro so einstellen, dass es bei jedem Öffnen der Datei automatisch ausgeführt wird, um den CSV-Export zu erleichtern.

  • Fehlerprotokollierung: Ergänze dein Makro um eine Fehlerprotokollierung, um Probleme beim Export schneller zu identifizieren.

  • Regelmäßige Backups: Bei der Arbeit mit Makros und automatisierten Prozessen ist es ratsam, regelmäßige Backups deiner Daten zu machen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass alle Texte in Anführungszeichen stehen?
Stelle sicher, dass der VBA-Code korrekt eingerichtet ist und alle Textspalten im Code als solche behandelt werden.

2. Welche Excel-Version benötige ich für den Export?
Das Beispiel nutzt die Excel Desktop App, insbesondere Office 365. Ältere Versionen können möglicherweise abweichende Funktionen nutzen.

3. Gibt es eine Möglichkeit, CSV-Dateien mit anderen Trennzeichen zu speichern?
Ja, du kannst das Trennzeichen im VBA-Code oder in den Excel-Regionseinstellungen anpassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige