Csv Datei mit währungen

Hallo zusammen,
ich habe eine xls Datei in der ein Preis (natürlich mit Komma getrennt) drin steht und ich will daraus ne CSV Datei erstellen.

Momentan nehme ich die Spalte in der die Preise drin stehen, kopiere sie und ändere im Textpad dann alle Komma in Punkte um.
Danach füge ich dann die Spalte wieder ein und muss über den Textkonvertierungs-Assistenten die Daten einfügen lassen…
Danach muss ich dann noch die ganze Spalte als Text formatieren, damit er mir auch die Nullen, die vorhanden sein können, umstellt.

Gibt es da auch eine andere Methode für?

Danke schonmal für die Antwort… :smile:

Gruß Uriel

PS: sofern jemand fragt warum ich das ganze mache… ich will die Daten in ne Datenbank importieren

Grüezi Micha

ich habe eine xls Datei in der ein Preis (natürlich mit Komma
getrennt) drin steht und ich will daraus ne CSV Datei
erstellen.

Speichern als .CSV alleine reicht nicht aus?

Gibt es da auch eine andere Methode für?

Allenfalls ein VBA-Makro, das dir die Daten ausschreibt:

Sub SaveCSV\_a()
Dim A As Variant
Dim B() As String
Dim D() As String
Dim Z As Long
Dim s As Byte
Dim r As Long
Dim C As Byte

Const Path As String = "C:\Test\"
Const Filename As String = "Test2"
Const Extension As String = ".CSV"
Const Separator As String = ";"
Const Wrapper As String = """"

 'Here you can define your own Range, too
 A = ActiveSheet.UsedRange

 If Not IsEmpty(A) Then
 Z = UBound(A, 1)
 s = UBound(A, 2)
 ReDim D(Z - 1)
 For r = 1 To Z
 ReDim B(s - 1)
 For C = 1 To s
 If InStr(1, A(r, C), Separator) \> 0 Then
 'Rows whith cells including the Separator
 'put in Wrapper
 B(C - 1) = Wrapper & A(r, C) & Wrapper
 Else
 B(C - 1) = A(r, C)
 End If
 Next C
 D(r - 1) = Join(B(), Separator)
 Next r
 Open Path & Filename & Extension For Output As #1
 Print #1, Join(D(), vbCrLf)
 Close #1
 End If
End Sub


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hy Thomas,

danke, dass du dir so eine Mühe gemacht hast…

Speichern als .CSV alleine reicht nicht aus?

Da die Beträge durch Komma getrennt sind, knallts beim Auslesen in der DB… außerdem sind die währungen in der db mit Punkt anstelle eines kommas und ich muss beide werte vergleichen…

weißt du da ne Möglichkeit, wie ich das ganze gehuddel oben umgehen kann?

Gruß Uriel

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Grüezi Micha/Uriel

danke, dass du dir so eine Mühe gemacht hast…

Speichern als .CSV alleine reicht nicht aus?

Da die Beträge durch Komma getrennt sind, knallts beim
Auslesen in der DB… außerdem sind die währungen in der db
mit Punkt anstelle eines kommas und ich muss beide werte
vergleichen…

OK, ja klar.

weißt du da ne Möglichkeit, wie ich das ganze gehuddel oben
umgehen kann?

Da musst Du mir ein wenig auf die Sprünge helfen - das Makro liest das aktive Tabellenblatt mit den gewünschten Eeinstellungen aus - ein Gehudel ist das nicht…

Allenfalls kannst Du in den Regionseinstellungen des Betriebssystems Englisch(USA) einstellen und dann deine Daten wie gewohnt ohne weitere Bearbeitung als .CSV speichern. IMO sollten dann die Trennzeichen wie von der DB benötigt verwendet werden.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Uriel,

ich habe eine xls Datei in der ein Preis (natürlich mit Komma
getrennt) drin steht und ich will daraus ne CSV Datei
erstellen.

Momentan nehme ich die Spalte in der die Preise drin stehen,
kopiere sie und ändere im Textpad dann alle Komma in Punkte
um.
Danach füge ich dann die Spalte wieder ein und muss über den
Textkonvertierungs-Assistenten die Daten einfügen lassen…
Danach muss ich dann noch die ganze Spalte als Text
formatieren, damit er mir auch die Nullen, die vorhanden sein
können, umstellt.

Gibt es da auch eine andere Methode für?

Danke schonmal für die Antwort… :smile:

Gruß Uriel

PS: sofern jemand fragt warum ich das ganze mache… ich will
die Daten in ne Datenbank importieren

für solche Aufgaben habe ich folgende Lösung:

Vorberitung in Excel (kann immer bleiben, hat keinen Einfluß auf andere Dateien, erfordert keine Veränderungen in der Ländereinstellung):
dazu muß eine Mappe offen sein, z. B. eine neue (leere).
->Extras, Optionen, International, Behandlung von Zahlen
erstmal den Haken bei „Trennzeichen vom Betriebssystem übernehmen“
jetzt bei „Dezimaltrennzeichen“ einen Punkt eintragen
bei „1000er Trennzeichen“ ein Komma eintragen
anschließend wieder den Haken bei „Dezimaltrennzeichen vom Betriebssystem übernehmen“ setzen.
Mit dieser Einstellung kannst du wie gewohnt arbeiten und hast die im Deutschen üblichen Trennzeichen.

Zum Umwandeln deiner *.xls entfernst du vor Öffnen der Datei den Haken bei „Dezimaltrennzeichen vom Betriebssystem übernehmen“,
erst jetzt öffne die Datei. Dezimaltrennzeichen ist nun automatisch der Punkt.
Speichere nun die Datei als *.csv mittels „Speichern unter…“, dann schließe die Datei. Excel fragt dich jetzt, ob du speichern willst. Hier bitte nein, du hast ja bereits gespeichert (ich habe mir noch nie angesehen, ob excel bei dieser Abfrage die Datei wieder ändern würde, wenn man mit ja antwortet).
Nun wieder den Haken setzen bei „Dezimaltrennzeichen vom Betriebssystem übernehmen“. Wenn du deine *.csv nun mit einem Editor oder Word prüfst, sind die Dezimaltrennzeichen wie gewünscht gesetzt. Trennzeichen zwischen den einzelnen Feldern ist das Semikolon, so wie hier üblich. Sollte für eine DB in Ordnung sein (welche DB?)
Falls du häufiger solche Dateien einlesen willst, sollte man das Ganze natürlich automatisieren.
Übrigens viele DB kann man dazu bringen, die Dezimalzahlen korrekt einzulesen ohne den Umweg. Aber dazu brauche ich mehr Informationen.
Woher kommen die Beträge? Aus einem anderem Programm wie SAP oder aus dem Internet?

Gruß
Marion

Hy Marion

die Beträge kommen aus einem XLS Sheet mit Macro, das sich ähnlich verhält wie eine SAP Anwendung… (ist halt verkleinert dargestellt)
Da werden Angaben zu Verbrauch und Preis gemacht und halt alles ohne 19% Steuern… also 7 Stellen hinterm Komma oder mehr…
Um genau zu sein werden zwei Dateien dabei erzeugt… eine Vergleichsdatei mit 19% Märchensteuer und angepasst an den Verbrauch und halt die csv Datei, die dann die Kommawerte beinhaltet…

Innerhalb einer Sybase DB sind die Werte, wie sie angeblich auftreten könnten gespeichert und die CSV Datei soll prüfen, ob die Angaben richtig sind… diese wird mittels Importfunktion in eine Table gespielt und dann wird gejoint zwischen den Soll und Ist Daten…

Und da war bisher das Prob… nämlich die Zahlenfelder mit der Währung… die mussten (wie beschrieben) vorher umgewandelt werden und haben dabei teilweise auch irre Stress gemacht :frowning:

Deine Variante hört sich richtig gut an…
Kann ich das innerhalb einer Dateivorlage oder eines Macros auch einstellen, dass das bei einer bestimmten Spalte (währung) immer so gezogen wird…

Was das mit dem nachfolgenden Speichern von Excel angeht… das versucht dann die CSV Datei in einem für Excel lesbarem Format abzuspeichern… Ganz böse Sache…

Danke schonmal für die Hilfe :smile:

Gruß Uriel

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]