Hochkomma auch bei Zahlen und leeren Zellen

Liebes Forum

Mein Steuerberater braucht für die Buchhaltungsoftware ein csv, in dem jede Info unter Anführungszeichen/Hochkomma steht, auch Zahlen.

Ich habe 2 Probleme:

  1. Wenn ich den csv-Export aus meinem Zahlungsdienstleister-Backend mit Libreoffice öffne (siehe Bild Importeinstellungen), in die gewünschte Form bringe und dann wieder als csv abspeichere, bekomme ich zwar alle Textinfos mit Anführungszeichen/Hochkomma, also “Textinfo”, aber Zahlen erscheinen OHNE “”, also nur die nackte Zahl (siehe Bild Editor-Ansicht, gelber Bereich). Wie kann ich auch Zahlen mit “” auswerfen?
  2. Leere Zellen werden nicht als “Text1”;"";“Text2” ausgeworfen, sondern auch ohne Anführungszeichen/Hochkomma, also “Text1”;;“Text2” (siehe Bild Editor-Ansicht, roter Bereich).

Meine Filtereinstellungen beim Speichern als csv finden sich im gleichnamigen Bild.

Danke für Eure Hilfe & LG

Crossposting

@Stefan1978, es wäre Deine Aufgabe gewesen dies bekannt zugeben!

Gehören die 2 Foren zusammen? Ich bin neu hier und brauche dringend einen Lösungsansatz, weil die Steuererklärung nächste Woche fertig sein muss.

Ich hoffe, dieses Forum ist auch dazu da, Usern zu helfen und nicht nur, um jemanden zurechtzuweisen, der in seiner Not an 2 Orten nach Hilfe sucht.

LG Stefan

  1. Bei der korrekten Codierung (Zeichensatz) sind die Umlaute korrekt (“Währung”).
  2. Dann muss die Sprache “Deutsch (Deutschland)” sein wg. des dt. Datums und Komma-Dezimalzahlen.
  3. Spalten sind durch Semikolon getrennt.
  4. Texte (und nur Texte) sind in doppelten Anführungszeichen.
    4a). Ja, Zahlen in Hochkomma als Text importieren (das währen Postleitzahlen, Kontonummern oder ähnliches)
  1. Erweiterte Zahlenerkennung: JA (so gut wie immer! sollte gar nicht zur Auswahl stehen).

Und schon hast Du 10 Spalten mit korrekten Datumswerten und Dezimalzahlen. Drücke Strg+F8 und sie erscheinen blau wie es sich nach einer solchen Prozedur gehört.
Beim nächsten Import bleiben diese Einstellungen erhalten.

Hi Villeroy!

Das ist sehr hilfsbereit von Dir, vielen Dank! Ich habe aber keine Probleme beim IMport, sondern beim EXport. Nachdem ich importiere, bearbeite und wieder als csv exportiere, sehe ich dann bei Kontrolle im Editor folgende Probleme:

  1. Zahlen sind nicht in Anführungzeichen (muss für die Spezialsoftware meines Steuerberaters aber so sein)
  2. Leere Zellen werden im csv (Ansicht im Editor) einfach “als Nichts” zwischen den beiden Semikolon gezeigt, also “xx”;;“yy” → es sollte aber so aussehen: “xx”;"";“yy”

Siehe oben mein Screenshot, gelber und roter Bereich

Die Spezialsoftware meines Steuerberaters meines StB kann prinzipiell nur Dinge zwischen Anführungszeichen einlesen.

Was für ein Steuerberater. Na dankeschön. Sein Excel kann ebenfalls vielfältige Geschmacksrichtungen von csv exportieren. Dann sollte er eigentlich als Dienstleister ein xls mit Rohdaten akzeptieren. Ein *.ods mit Excel zu öffnen würde ihn wahrscheinlich komplett aus der Bahn werfen. Sei’s drum.
Datei>Speichern unter…
Dateityp: CSV (csv)
[X] Filtereinstellungen bearbeiten
[Speichern]
“Wollen Sie wirklich …?” Ja, ich will.
Zeichensatz: Unicode UTF-8 (wenns dem Herrn recht ist, ansonsten ist “Windows 1252” sehr populär bei in den 90igern stehen gebliebenen)
Feldtrenner: ;
Zeichenkettentrenner: <löschen, nix, nada>
[X] Zellinhalt wie angezeigt.
[X] Text in Hochkommata ausgeben [Edit]

Lieber Villeroy!

Ich schätze Deine Hilfsbereitschaft, aber Du brauchst nicht auf meinen Steuerberater hinhauen. Er ist ein Freund von mir, hochprofessionell und modern. Bitte nicht schimpfen, wenn man die Hintergründe nicht kennt. Seine Software ist für Profis und kann wesentlich mehr als Excel, hat aber halt bestimmte Erfordenisse, um Daten automatisiert einlesen zu können. Sie ist eben KEIN Excel und arbeitet NICHT mit xls. Sonst hätten wir das Problem nicht. Sie braucht csv und jede Info in “”, auch Zahlen.

Mit Deinem Ansatz habe ich leider das Gegenteil erreicht. Wenn ich es so mache, wie Du schreibst und dann im Editor kontrolliere, ist gar nichts mehr in “”, auch Textinfo nicht. Ich bräuchte aber alles in “” sowohl Text als als Zahlen.

Wenn Du mir da weiterhelfen könntest, wäre das natürlich sehr toll. Danke!

Tschuldigung.
Wähle den Datenbereich aus.
Bearbeiten>Suhen&Ersetzen…
Weitere Optionen
[X] Nur in Auswahl
[X] Reguläre Ausdrücke
Suche: ^$
Ersetze: =""
[Alle ersetzen]
Dialog offen lassen
Suche: .+ [ein Punkt und ein Plus]
Ersetze: $0
[Alle ersetzen]
[Schließen]
Jetzt sind alle Leerzellen mit leeren Zeichenfolgen aufgefüllt.
Und jetzt nochmal mit geänderten Filtereinstellungen exportieren einschließlich Option “Text in Hochkommata ausgeben”.

1 Like

Anstelle der doppelten Ersetzung:

Sub Fill_Empty_Strings()
REM replace blanks with empty strings in active sheet's used area 
cFml = "="""""
	oSheet = ThisComponent.CurrentController.getActiveSheet()
	oCursor = oSheet.createCursor()
	oCursor.gotoStartOfUsedArea(False)
	oCursor.gotoEndOfUsedArea(True)
	oRanges = oCursor.queryEmptyCells()
	e = oRanges.createEnumeration()
	while e.hasMoreElements()
		rg = e.nextElement()
		a() = rg.getFormulaArray()
		iUBR = uBound(a())
		Redim b(iUBR)
		for iRow =  0 to iUBR
			iUBC = uBound(a(iRow))
			Redim row(iUBC)
			for iCol = 0 to iUBC
				row(iCol) = cFml
			next iCol
			b(iRow) = row()
		next iRow
		rg.setFormulaArray(b())
	wend
End Sub
1 Like

Grandios, das hat funktioniert - 1000 Dank! :star_struck:

Wo würde ich den Code eintragen, den Du drunter gepostet hast?

LG

Extras>Macros>Verwalten>Basic…
Wähle “Meine Macros” > “Standard”
Klick [Neu…]
Ein neues Modul “Modul1” wird unter “Meine Macros”, Bibliothek “Standard” angelegt und geöffnet.
Lösche den leeren Abschnitt Sub Main() End Sub und kopiere meinen Code in das leere Modul.

Ausführen
Extras>Macros>Verwalten>Basic…
Wähle “Meine Macros” > “Standard” > “Modul1” > “Fill_Empty_Strings” und klicke [Ausführen]
Oder auch via Extras>Macros>Ausführen>Meine_Macros>Standard>Modul1>Fill_Empty_Strings

Das Ding findet alle Zellen, die wirklich leer sind innerhalb des verwendeten Bereichs auf dem gerade aktiven Arbeitsblatt und füllt diese mit der Formel =""

Hat funktioniert! Das ist großartig, ich danke Dir sehr. Hat mir wirklich schlaflose Nächte bereitet, da ich bis jetzt als Notlösung die Anführungszeichen im Editor alle händisch nachgetragen habe.

LG, Stefan

Hat funktioniert! Das ist großartig, ich danke Dir sehr. Hat mir wirklich schlaflose Nächte bereitet, da ich bis jetzt als Notlösung die Anführungszeichen im Editor alle händisch nachgetragen habe

Alternative zu Villeroys Vorschlag: Du musst erreichen, dass alle Spalten Text sind und keine Zahlen, damit der Export mit “” klappt. Dazu als Text importieren (Spaltenformat einstellen und auch auf die Erkennung spezieller Zahlen verzichten). Beim Export sollten dann alle Spalten auch Anführungsstriche erhalten.
Ob das such bei Leerfeldern klappt müsste ich probieren.

Ich arbeite in solchen Fällen lieber mit einem zusätzlichen Tabellenblatt, das mir das Exportformat erzeugt =TEXT(BLATT1.A1)

1 Like

Hi Wanderer

Danke, das ist sehr hilfreich. Mittlerweile konnte ich einige Probleme lösen:

  1. Datum (amerikanisch formatiert) beim Import als MTJ definieren → wird dann nach Öffnen richtig als TMJ angezeigt. Dann noch Daten/Text in Spalten/als Text formatieren → Dann erscheint es beim Export mit Anführungszeichen, so wie ich es brauche.
  2. Dasselbe mache ich mit anderen Zahlen → Da kann ich die Spalte schon direkt beim Import als Text definieren → Dann klappts hier auch mit den Anführungszeichen

Was aber noch immer nicht funktioniert: Leere Zellen erhalten beim Export keine Anführungszeichen.

Für die leeren Felder habe ich derzeit auch keine direkte Lösung.

Bei Konvertierungen mit Cakc arbeite ich meist mit einer Import und einer Export-Tabelle. Da die Export-Tabelle sich die Daten als Formel z.B.

=WENN(INPUT.B3="";"";INPUT.B3)

holt, steht da bei mir automatisch ein Leerstring “” und nie eine echt leere Zelle. Ist eine Option, wenn man Macros vermeiden will. Beim Speichern als .csv wird ja immer nur eine Tabelle gespeichert.

Wenn ich die Daten aus einer Datenbank hole kann via

IFNULL(feld, '')

ein Leerstring erzeugt werden. Alternatve COALESCE()

Danke auch Dir!

Gibt es einen Grund, warum man Makros vermeiden wollen würde? (Ich bin bisher ohne Makros ausgekommen, aber die Makro-Lösung von Villeroy funktioniert gut).

LG

In manchen Firmen ist der Einsatz von Makros generell abgeschaltet oder stark beschränkt, was hauptsächlich mit der Verbreitung von Viren/Schadprogrammen via MS-Office-Macros zu tun hat.

Wer den Code eines Macros nicht kontrollieren kann, sollte den Einsatz beschränken, also z.B. nur auf Nachfrage, nur bei bestimmten Dokumenten (“sicher Orte”) etc.

…und wenn ich mich recht erinnere habe ich kurzlich von Villeroy “Macros are evil” gelesen, allerdings wohl bezogen auf die unnötige Nutzung.
Edit: Tips & Tricks for ease of use - #5 by Villeroy

1 Like

Ja, Makros sind böse und ich vermeide sie weil es viel zu beschwerlich und fehleranfällig ist, jedes Problem mit Basic-Code totzuschlagen wenn man mit Bordmitteln innerhalb einer Minute zu einem Ergebnis kommen kann. Weil ich so böse zu seinem StB war habe ich mir diese kleine Fingerübung erlaubt. Stefan wird das exakt gleiche Problem wahrscheinlich öfter totschlagen müssen, und LO kann nunmal diese Art von csv nicht erzeugen. ist mir auch noch nicht untergekommen.