Dezimaltrennung bei TXT-Import
20.11.2014 15:23:34
Fedrowitz
ich fange gerade an, mich intensiver mit der Makro-Programmierung auseinander zu setzen. Die Vorgehensweise ist hier Learning-by-doing und aus den Dingen lernen, die andere so gemacht haben.
Aktuelles Projekt: Einlesen / Importieren von Inhalt einer TXT-Datei
Wichtig hierbei: Der Inhalt sollte in Excel das identische Format wie in der TXT-Datei vorliegen. Es soll nur Spalte A des Excelarbeitsblattes beschrieben werden.
Der aktuelle Code lautet dafür (auch hier aus dem Forum):
________________________________________________________
Sub Erstes_Einlesen()
Dim Datei As String, Text As String
Dim Zeile As Long
On Error GoTo Fehler
'Quelldatei festlegen
Datei = "####Dateiname"
'Tabellenblatt aktivieren, wo die Daten beim ersten Einlesen gespeichert werden sollen.
Sheets("Export").Activate
Open Datei For Input As #1 ' Quelldatei öffnen.
Zeile = 1
Do While Not EOF(1) ' Schleife bis Dateiende
Line Input #1, Text ' Text lesen
ActiveSheet.Cells(Zeile, 1) = Text
Zeile = Zeile + 1
Loop
Close #1 'Quelldatei schließen
Exit Sub
Fehler:
Close #1
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "da ist leider ein Fehler aufgetreten"
End Sub
___________________________________________________________________________
Als Ergebnis erhalte ich (nur ein kleiner Auszug für den Bereich, um den sich dann das Problem dreht):
ABSCHNITT 1
280
30
0
7'068'583'471
Die ersten vier Zeilen sind korrekt. Dazu als Vergleich der Auszug aus der TXT-Datei:
ABSCHNITT 1
280.0000000
30.0000000
0
706.8583471
Die Zeile 5 ist eigentlich eine Zahl mit mehreren Nachkommastellen, nur wird dies nicht erkannt. Das Problem tritt immer auf, wenn nach der Komma nicht Null sondern eine Zahl steht...
Was ist zu tun?
Ich habe auch noch einen zweiten Code gefunden, der die Trennzeichen mit beschreibt, allerdings tritt dann das zusätzliche Problem auf, dass der Inhalt aus der TXT-Datei in mehreren Spalten steht...
_______________________________________________________________________________
Sub Ergebnisse_einlesen() ' liest alle Zeilen aus der Text-Ergebnisdatei und schreibt Inhalt in _
Spalten
Dim intFF As Integer
Dim iZeile As Long, iSpalte As Long
Dim strText As String, arrSplit, iCol As Integer
Dim strDatei As String
Dim strSep As String
strDatei = "q:\Test.sr1"
Sheets("Import").Activate
strSep = "." 'Trennzeichen
'strSep = vbTab 'Trennzeichen
intFF = FreeFile
iZeile = 1 ' Variable für Zeilennummer
Open strDatei For Input As #intFF ' Öffnet Textdatei zum Lesen
Do While Not EOF(intFF) ' Schleife: Laufe bis zur letzten Zeile
Line Input #intFF, strDatei ' Zeile Lesen und zwischenspeichern
arrSplit = Split(strDatei, strSep)
For iSpalte = 1 To UBound(arrSplit) + 1
iCol = iSpalte - 1
With Cells(iZeile, iSpalte)
If arrSplit(iCol) "" Then
If InStr(1, arrSplit(iCol), ",") = 0 And IsDate(arrSplit(iCol)) Then
.Value = CDate(arrSplit(iCol))
ElseIf IsNumeric(arrSplit(iCol)) Then
.Value = CDbl(arrSplit(iCol))
Else
.Value = arrSplit(iCol)
End If
End If
End With
Next
iZeile = iZeile + 1 ' Zeilennummer erhöhen
Loop ' zurück zum Schleifenbeginn
Close #intFF ' schließt die Textdatei
Fehler:
With Err
Select Case .Number
Case 0
Case 13 'Typfehler bei Wertumwandlung
Cells(iZeile, 1).Offset(0, iSpalte) = arrSplit(iSpalte)
Resume Next
Case Else
MsgBox "Fehler-nr.: " & .Number & vbLf & .Description
Close
End Select
End With
End Sub
____________________________________________________________________
Vielleicht könnt ihr mir helfen bei diesem Problemchen?
Grüße