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

Forumthread: CSV-Datei ohne Anführugnszeichen

CSV-Datei ohne Anführugnszeichen
07.05.2024 09:59:06
earlycon
Guten Morgen zusammen,
ich erstelle per Makro aus einem Tabellenblatt eine CSV-Datei. In A1 steht z.B.

IS;1234;1.0;1234;20240507093743;8;8000,00;0,00;L;

Wenn ich die csv mit dem Editor öffne steht der Eintrag jedoch in Anführungszeichen:

"IS;1234;1.0;1234;20240507093743;8;8000,00;0,00;L;"

Wie ich mich schon belesen habe, hängt das vermutlich mit dem Komma der Zahlen 8000,00 und 0,00 (Soll und Haben Betrag) zusammen, welche als Trennzeichen erkannt werden.

Frage: wie kann ich verhindern, dass die Anführungszeichen gesetzt werden ? Mit dem Hochkomma soll das als Text erkannt werden, aber ich bekommen das nicht hin...
Würde mich freuen, wenn mir jemand auf die Sprünge hilft.

Besten Dank und viele Grüße
Stefan
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 10:10:06
schauan
Hallöchen,

wenn das alles in einer Zelle steht, dann ist das unabhängig von irgendwelchen Satzzeichen eine Text.
Sollen das unterschiedliche "Datenspalten" werden, dann trenne das vorher mit Text in Spalten.
Oder ...
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 10:50:45
earlycon
Hallo schauan,

danke für Deine Rückmeldung.

Nein, der Datensatz steht komplett in einer Zelle (A1), zudem ist die Spalte A als Text formatiert. Wenn ich manuell das Komma und die Nullen von 8000,00 und 0,00 entferne, werden auch keine "" erzeugt. Das hängt also wohl mit dem Komma zusammen. Gibt es ein Zeichen, welches beim Export in die csv sagt "nimm alles als Text" ?

Viele Grüße
Stefan
Anzeige
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 10:59:19
Sigi.21
Hallo Stefan,

hast du ein Excel mit anglo-amerikanischer Ländereinstellung und "Komma" als Trennzeichen? Dann wäre dies eine Erklärung.
Bei deutscher Version ist das Trennzeichen ein "Semikolon"!

Gruß Sigi
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 11:27:10
earlycon
Hallo Siggi,

nein, unsere IT-Admins haben alles auf Deutsch eingestellt. Ich verstehe nicht, wie das zusammenhängt... mit Komma = "" ohne Komma keine ""...

Danke und viele Grüße
Stefan
Anzeige
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 11:33:33
Yal
Hallo Stefan,

wenn Du diese Datei per Makro erzeugst, dann poste bitte den VBA-Code hier (verwende den "Code <pre><code>"), sonst ist nur raten.

VG
Yal
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 11:48:44
earlycon
Hi Yal,

hier der Code zu Erstellung der csv:

Public Sub CSV_Exportieren()

Dim Pfad, Dateiname As String
Application.ScreenUpdating = False
Pfad = Sheets("Wertetabelle").[B2] & "\"
Dateiname = Sheets("Wertetabelle").[B3] & "_" & Format(Date, "MMDD")
With Sheets("CSV_Export").Columns("A:A")
.WrapText = False
.NumberFormat = "@"
.Locked = False
End With
ThisWorkbook.Worksheets("CSV_Export").Copy
ChDir Pfad
Dateiname = Pfad & Dateiname & ".csv"
ActiveWorkbook.SaveAs Filename:=Dateiname, FileFormat:=xlCSVUTF8 'xlCSV 'xlOpenXMLWorkbook
ActiveWorkbook.Close False
Application.ScreenUpdating = True
End Sub


Viele Grüße
Stefan
Anzeige
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 12:14:41
Yal
Hmm... ja, diese "SaveAs" von Excel ist natürlich schwer zu beeinflussen. Besser geht es, wenn die Daten in einer Textdatei gestreamt werden.

Achte auf das Anbinden der Bibliothek "Microsoft Scripting Runtime", um die Objekte FileSystemObject und TextStream zur Verfügung zu haben. Siehe Details in der Onlinehilfe.

Public Sub CSV_Exportieren()

'Unter Anbindung (in VB-Edit., "Extras", "Verweise..", Bibl. anhaken) von:
'Microsoft Scripting Runtime
Dim FSO As New FileSystemObject
Dim Datei As TextStream
Dim Z As Range 'Z wie Zelle

With Sheets("Wertetabelle")
Set Datei = FSO.CreateTextFile(.Range("B2").Value & "\" & .Range("B3").Value & "_" & Format(Date, "MMDD") & ".csv", Unicode:=True)
End With

With Sheets("CSV_Export")
For Each Z In Range(.Range("A1"), .Range("A99999").End(xlUp))
Datei.WriteLine Z.Text
Next
End With
Datei.Close
End Sub


VG
Yal
Anzeige
AW: CSV-Datei ohne Anführugnszeichen
07.05.2024 13:37:24
earlycon
Mein lieber Yal,

herzlichen Dank, es funktioniert einfach perfekt 👍🏼 Unglaublich, was ihr alles wisst (und ich nicht...😔)
Und im Grunde genommen ist es ja auch so einfach, wenn man weiß, wie... 😄

Viele Grüße
Stefan
AW: CSV-Datei ohne Anführugnszeichen
09.05.2024 12:56:31
schauan
Hallöchen,

hier mal noch die Variante mit Text in Spalten. Das Makro ist jetzt einfach nur aufgezeichnet ...
Wichtig dabei ist, dass bei den Einstellungen dabei alles auf Text gestellt wird, weil ansonsten u.a. die "lange" Zahl in Exponentialschreibweise kommt.
Das Semikolon am Ende nach dem L kommt nur, wenn Du entweder in Spalte J mal irgendwo was hast oder du müsstest in J Leerzeichen einfügen oder ...

Sub Makro1()

'
' Makro1 Makro
'

'
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon _
:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array( _
Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), _
Array(8, 2), Array(9, 2), Array(10, 1)), TrailingMinusNumbers:=True
ActiveWorkbook.SaveAs Filename:="C:\Test\_0509_.csv", FileFormat:=xlCSVUTF8 _
, CreateBackup:=False
End Sub


Mal noch ein Vorschlag für Yal_s code. Man kann recht viele Daten auch in einem Rutsch ausgeben:
Also, statt
    With Sheets("CSV_Export")

For Each Z In Range(.Range("A1"), .Range("A99999").End(xlUp))
Datei.WriteLine Z.Text
Next
End With


nur
Datei.WriteLine Join(WorksheetFunction.Transpose(Sheets("CSV_Export").Range("A1:A25200").Value), vbLf)



... wobei man den Bereich natürlich wie bei Yal flexibel beenden und nicht auf 25200 Zeilen festlegen sollte :-)

Anzeige
AW: CSV-Datei ohne Anführugnszeichen
09.05.2024 13:23:50
earlycon
Hallo schauan,

besten Dank, dass Du Dich noch mal gemeldet hast und für die Tipps 👍🏼

Ich habe Yals code eingebaut und bin begeistert, es gibt so vieles, was ich noch gar nicht kannte (das mit dem Streamen).
Deine Ergänzung dazu ist natürlich auch genial, das werde ich mir gleich mal abspeichern.

Könnte ich auf diese Art wohl auch Bewertungen, die untereinander in einzelnen Zellen in einer Spalte stehen in ein
Textfeld (ja, ich hab verstanden, es gibt sehr viele verschiedene Textfelder 😅) "streamen" ? Das war ein anderer Thread von mir, ich wollte ja Bewertungen (1. Spalte = Anzahl von Sternchen, 2. Spalte Text mit Bewertungen) alle in ein Textfeld ausgeben. Das soll eine Auswertung von einem Seminar werden. Im Prinzip klappt das auch schon, indem ich die Werte erst in eine Variable einlese und diese dann dem Textfeld übergebe. Jedoch wird der Text dann beim Blattumbruch abgeschnitten. Vielleicht hast Du ja noch eine Idee, wie man das machen könnte.

Herzlichen Dank und Dir einen schönen Feiertag
Gruß Stefan
Anzeige
AW: CSV-Datei ohne Anführugnszeichen
09.05.2024 13:42:24
schauan
Hallo Stefan,

mit Aufzeichnung bekommst Du z.B. für eine Textbox auf einem Blatt einen ersten Ansatz
    ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 326.25, 377605.5, _

168.75, 36).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "ddd"


Nun könntest Du das kombinieren, hier mal mit der aufgezeichneten Variante und noch zwei andere - wenn Du den Namen der Textbox nehmen willst ...

Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = Join(WorksheetFunction.Transpose(Range("A1:A25").Value), vbLf)

'Geht aber auch
ActiveSheet.Shapes("Textbox 1").TextFrame2.TextRange.Text = Join(WorksheetFunction.Transpose(Range("A1:A25").Value), vbLf)
ActiveSheet.Shapes("Textbox 1").DrawingObject.Text = Join(WorksheetFunction.Transpose(Range("A1:A25").Value), vbLf)


Man kann dann natürlich auch noch die Größe der Textbox manuell oder automatisch anpassen und anderes ...



Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige