772 Aufrufe
Gefragt in Tabellenkalkulation von nuro1 Einsteiger_in (11 Punkte)
Hallo

Ich würde gerne Messergebnisse automatisch mit Excel/Makro öffnen
und umwandeln. Da leider die Dezimalzahlen mit Punkt statt Komma
getrennt sind.
Ausgangszahlen:


0.1001 23.0900 1105.7397 2338.8189 26.5546
0.2001 23.0900 1105.1277 2338.8036 26.5561

So soll es aussehen:

0,1001 23,0900 1105,7397 2338,8189 26,5546
0,2001 23,0900 1105,1277 2338,8036 26,5561



Ich habe schon mit der „Makro aufzeichnen“ Funktion etwas gebastelt, es
funktioniert soweit gut, nur den Pfad muss ich immer händisch eintippen!
Könnte man den Code so ändern, dass es sich automatisch ein Ordner
öffnet.


Sub PunktKomma()

'
ChDir "C:\Ordner1\Ordner2\ordner3"
Workbooks.OpenText Filename:= _
"*.measures" _
, Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
Semicolon:=False, _
Comma:=False, Space:=False, Other:=False,
FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)),
DecimalSeparator:=".", _
ThousandsSeparator:=",", TrailingMinusNumbers:=True
End Sub


Dateiformat ist .measures, das ist sowas wie txt!

1 Antwort

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Nuro,

ich gehe mal davon aus, dass die einzelnen Werte in deiner zu importierenden Datei durch ein Leerzeichen getrennt sind.

Probiere mal das folgende Makro aus:

Sub import()
Dim Arr
Dim Datei
Dim Datei1
Dim FSO
Dim L As Long
Dim Tmp As Variant
Dim vnt_Ausgabe As Variant
Dim I As Integer
Dim Str_String As String

'Textdatei auslesen
Set FSO = CreateObject("Scripting.FilesystemObject")
'
ChDrive "C"
ChDir "C:\Ordner1\Ordner2\ordner3"

Datei = Application.GetOpenFilename()
If Datei = False Then
'Makro abbrechen wenn Benutzer den Öffnen-Dialog abbricht
MsgBox "Der Benutzer hat abgebrochen.", vbInformation
Exit Sub
End If
Set Datei1 = FSO.OpentextFile(Datei)

Str_String = Datei1.readall
Datei1.Close

Arr = Split(Str_String, vbCrLf) 'Nach Datensätzen splitten
ReDim vnt_Ausgabe(UBound(Arr), 200) '200 Spalten reichen ???
For L = 0 To UBound(Arr)
Tmp = Split(Arr(L), " ") 'Jeden Datensatz nach Werten splitten
For I = 0 To UBound(Tmp)
vnt_Ausgabe(L, I) = Tmp(I) 'Jeden Wert in das Array vnt_Ausgabe umschaufeln
Next
Next
'Ausgeben. Anpassen.
ActiveSheet.Range("A1").Resize(UBound(vnt_Ausgabe) + 1, UBound(vnt_Ausgabe, 2)) = vnt_Ausgabe
End Sub


Hiermit kannst du über den Öffnen-Dialog die Datei auswählen (es werden alle Dateien angezeigt). Durch den Import werden die Punkte auch in Kommas umgewandelt.

Gruß

M.O.
...