Vba skript zum einlesen von textdateien in excel tabellen
Hallo,
es sollen mehrere Zahlen aus einer textdatei in einer excel tabelle eingefügt werden. es klappt soweit, dass alle zahlen (mit tausendtrennzeichen oder kommatrennzeichen) korrekt in der tabelle geschrieben werden, bis auf einem bestimmten zahlenformat. Alle Zahlen die mit [1-9] anfangen und gefolgt von einer Komma sind werden beim einfügen in der entsprechenden zelle automatisch umgewandelt (z.B. 3,0195 -> 301.950 )
In vba skript habe ich folgendes probiert:
1)
2)
3)
Klappt aber nicht
Für alle anderen Zahlenformate schon (0 gefolgt von einer komma, 2 oder mehrere Zahlen gefolgt von einer komma etc).
Mit folgendem Ausdruck konnte ich die Zeilen identifizieren, die automatisch konvertiert werden
- hier werden die Zahlen zunächst im stringformat in der excel tabelle importiert
Habe dann mit
probiert, um die Strings wieder in Zahlenformat zu konvertieren, die Strings werden aber dann wieder falsch formatiert (z.B. 3,0195 -> 301.950 )
Freue mich über jeden Hinweis
Grüße
dedalus2011
es sollen mehrere Zahlen aus einer textdatei in einer excel tabelle eingefügt werden. es klappt soweit, dass alle zahlen (mit tausendtrennzeichen oder kommatrennzeichen) korrekt in der tabelle geschrieben werden, bis auf einem bestimmten zahlenformat. Alle Zahlen die mit [1-9] anfangen und gefolgt von einer Komma sind werden beim einfügen in der entsprechenden zelle automatisch umgewandelt (z.B. 3,0195 -> 301.950 )
In vba skript habe ich folgendes probiert:
1)
wksZ.Cells(Cell1+ 2, Cell2 + 1).Value =Replace(3,0195, "0,", "0.", 1, 1, 2)
2)
For Each xCell In Selection
xCell.Value = xCell.Value
Next xCell
3)
Cells.NumberFormat = ""
Klappt aber nicht
Für alle anderen Zahlenformate schon (0 gefolgt von einer komma, 2 oder mehrere Zahlen gefolgt von einer komma etc).
Mit folgendem Ausdruck konnte ich die Zeilen identifizieren, die automatisch konvertiert werden
if RegexContains(Array(Values), "^([1-9])(,)") = True Then
wksZ.Cells(Cell1+ 2, Cell2 + 1).Value = " ' " + Array(Values)
Habe dann mit
For Each xCell In Selection
xCell.Value = xCell.Value
Next xCell
probiert, um die Strings wieder in Zahlenformat zu konvertieren, die Strings werden aber dann wieder falsch formatiert (z.B. 3,0195 -> 301.950 )
Freue mich über jeden Hinweis
Grüße
dedalus2011
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183555
Url: https://administrator.de/contentid/183555
Ausgedruckt am: 24.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Moin dedalus2011,
In der Zeile, wo der String eingelesen wird, der angenommen in der Variable 'strToken' steht, dann passiert das bei Dir etwa so:
Das müsste geändert werden in:
Der Typ der Wandlung ist Dir freigestellt (siehe VBA-Hilfe). Nachträgliches Ändern bringt da aber wenig (wenn also das Kind schon in den Brunnen gebrochen ...)
Freundliche Grüße von der Insel - Mario
Zitat von @dedalus2011:
... Alle Zahlen die mit [1-9] anfangen und gefolgt von einer Komma sind [...] automatisch umgewandelt (z.B. 3,0195 -> 301.950 )
... Alle Zahlen die mit [1-9] anfangen und gefolgt von einer Komma sind [...] automatisch umgewandelt (z.B. 3,0195 -> 301.950 )
wksZ.Cells(Cell1+ 2, Cell2 + 1).Value =Replace(3,0195, "0,", "0.", 1, 1, 2)
In der Zeile, wo der String eingelesen wird, der angenommen in der Variable 'strToken' steht, dann passiert das bei Dir etwa so:
wksZ.Cells(Zeile, Spalte).Value = strToken ' das Einlesen eines Strings
Das müsste geändert werden in:
wksZ.Cells(Zeile, Spalte).Value = CDbl(strToken) ' das Einlesen eines in ein Zahlenformat gewandelten Strings
Der Typ der Wandlung ist Dir freigestellt (siehe VBA-Hilfe). Nachträgliches Ändern bringt da aber wenig (wenn also das Kind schon in den Brunnen gebrochen ...)
Freundliche Grüße von der Insel - Mario
Zitat von @dedalus2011:
kommt 3,01950 raus. D.h. der Wert wird in der Tabellenzelle umgewandelt (3,01950 -> 3), wie oben beschrieben.
kommt 3,01950 raus. D.h. der Wert wird in der Tabellenzelle umgewandelt (3,01950 -> 3), wie oben beschrieben.
Du schriebst erst, da käme ein Fehler - ja, bei dem Array-Konstrukt mit vorgeschaltetem Hochkomma ...
Die soeben beschriebene 'Umwandlung' rührt daher, dass die Zelle das falsche Format hat (evtl. Ganzzahl) - hier solltest Du entsprechend formatieren.
Freundliche Grüße von der Insel - Mario