Dezimalkomma

Bild

Betrifft: Dezimalkomma
von: Martin Herbig
Geschrieben am: 25.11.2003 12:53:57

Ich möchte eine ASCII-Datei aus Excel erzeugen und dabei alle Zahlen mit Dezimalkomma als Zahlen mit Dezimalpunkt speichern.

Wer kennt einen Weg ?

Danke Martin

Bild


Betrifft: AW: Dezimalkomma
von: Nayus
Geschrieben am: 25.11.2003 13:28:16

Hallo,
wenn ich Daten in einer ASCII-Datei speichere, verwende ich eine UDF für
die Umsetzung von Dezimalkomma nach Dezimalpunkt.

Gruß,
Arnim



Function dec_trz(ByVal p_num As Double, p_decs As Variant) As String
Dim l_zf, l_num As String
Dim l_decs As Integer
If IsNull(p_decs) Then
 l_decs = 0
Else
 l_decs = CInt(p_decs)
End If
If l_decs = 2 Then
   l_num = Format$(p_num, "##########0.00")
ElseIf l_decs = 1 Then
   l_num = Format$(p_num, "0.0")
Else
   l_num = Format$(p_num, "###0")
End If
l_zf = ""
If CStr(p_num) <> "" Then
  For i = 1 To Len(l_num)
   If Mid$(l_num, i, 1) = "," Then
      l_zf = l_zf & "."
   Else
      l_zf = l_zf & Mid$(l_num, i, 1)
   End If
  Next i
Else
  l_zf = "NULL"
End If
dec_trz = l_zf
End Function



Bild


Betrifft: AW: Dezimalkomma
von: Martin Herbig
Geschrieben am: 25.11.2003 13:52:31

Hallo Arnim,

Danke für die schnelle Antwort, aber könntest Du mir den Code noch näher erläutern ?

Martin


Bild


Betrifft: AW: Dezimalkomma
von: Nayus
Geschrieben am: 25.11.2003 14:16:26

Hallo Martin,
EXCEL-gut , VBA-gut steht im Deinem Level, also gehe ich davon aus, dass Du
Module, UDFs und deren Verwendung kennst.
Beim Export gehe ich folgendermaßen vor:


Sub erzeugen, die durch die Zeilen meiner zu exportierenden Tabelle loopt.
In jeder Zeile die Zellinhalte zu einem String zusammenbauen. Ich verwende
als Feldtrenner ein Semikolon. Wenn in einer Zelle Dezimalzahlen stehen, rufe ich 
die UDF ("dez_trz") mit Dezimalzahl und Anzahl der Nachkommastellen als Parameter.
Zurück bekomme ich eine Zeichenfolge, die ich dann in die Ergebnisvariable hineinkonkateniere.
Beispielcode:

Sub export2txt()
  dim zf as string
  open ausgabedatei for output as #1
  for i = 1 to 1000 
    for j = 1 to 10
     if j = 1 then
       zf = cells(i,j)
     else
       zf = zf & ";"
       if j = 3 then
          'In Spalte C stehen Dezimalzahlen
          zf = zf & dez_trz(cells(i,j), 2)
       else
          'sonst Text
          zf = zf & "'" & cells(i,j) & "'"
       end if
     end if
    next j
    Print #1, zf
  next i
  close ausgabedatei
End Sub


Viel Erfolg,
Nayus


Bild


Betrifft: AW: Dezimalkomma
von: Andi
Geschrieben am: 25.11.2003 14:24:39

Hallo Martin,

vielleicht ist Dir ja auch schon damit geholfen:
wenn Du in der System-Steuerung die Ländereinstellungen auf "England" setzt, hast Du in Excel automatisch Dezimalpunkte statt Dezimalkommas.

Schönen Gruß
Andi


Bild

Beiträge aus den Excel-Beispielen zum Thema " Grafik ausblenden"