Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dezimaltrennung bei TXT-Import

Dezimaltrennung bei TXT-Import
20.11.2014 15:23:34
Fedrowitz
Hallo liebe Herber-Forumgemeinde,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dezimaltrennung bei TXT-Import
20.11.2014 16:56:26
Daniel
Hi
eine Textdatei kannst du in Exel auch mit der Funktion DATEN - DATENTOOL - EXTERNE DATEN - AUS TEXT einlesen.
Über die einstellungen kann manregeln, dass alles in eine Spalte geschrieben wird.
Hier mal der Code dazu, mit dem Recorder aufgezeichnet und die für diesen einfachen Fall nicht benötigten Einstellungen gelöscht.
Das .Delete am Ende sorgt dafür, dass der Text nur eingelesen wird, ohne das eine Verknüpfung zur Textdatei bestehen bleibt.
Sub Makro1()
With ActiveSheet.QueryTables.Add( _
Connection:="TEXT;C:\DeinPfad\DeineDatei.txt", _
Destination:=Range("$A$1"))
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileColumnDataTypes = Array(1)
.Refresh BackgroundQuery:=False
End With
End Sub

Gruß Daniel

Anzeige
AW: Dezimaltrennung bei TXT-Import
21.11.2014 08:17:28
Fedrowitz
Hi Daniel,
danke für die Antwort. Es ist etwas merkwürdig...der Import mit dem von mir angegebenen Code funktioniert nun, die Trennung der Zahlen ist nun korrekt. Mit der von dir genannten Methode würde dieses Problem allerdings wieder auftreten...
Ich bleibe nun erstmal bei meinem Code, sollten sich da wieder Probleme einstellen, dann meld ich mich einfach nochmal.
Vielen Dank und ein schönes Wochenende.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige