Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
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
txt datei einlesen
29.05.2015 11:22:55
Mahias
Hi
ich habe folgendes Problem ich moechte eine Textdatei mit vba einlesen.
Ich muss ehrlich gestehen, dass ich der totale Anfaenger bin...
Ein fast passendes Marko habe ich schon online gefunden und auf meine Beduerfnisse angepasst. Nur eine Kleinigkeit stoert mich noch total und da braeuchte ich eure Hilfe!!!
die Datei dich ich einlese sieht wie folgt aus:
"R104" 186.8 -50.1 0 180 NONE 0 0 0 0 1 0 "K005924" "R0805" ""
"Vs83" 186.9 -53.9 0 270 NONE 0 0 0 0 1 0 "K012758" "SOT23" ""
das marko welches benutze ist dieses hier:
Sub Schaltfläche9_Klicken()
Dim varName As Variant
Dim i As Long
Dim j As Integer
Dim arZeilen() As String
Dim arData() As String
Dim strVal As String
Dim intColumn As Integer
Dim strPfad As String
Dim lngFN As Long
Dim strText As String
Dim vntArrayZeilen As Variant
Dim lngZeileNr As Long
Dim vntArrayWerte As Variant
Dim lngSpalte As Long
Dim wksZ As Worksheet
Set wksZ = ActiveWorkbook.Worksheets("Tabelle1")
varName = Application.GetOpenFilename("Textdateien (*.*),*.txt,Alle Dateien,*.*")
If varName = False Then Exit Sub
strPfad = varName
lngFN = FreeFile
Open strPfad For Binary As lngFN
strText = Space(LOF(lngFN))
Get lngFN, 1, strText
Close lngFN
strText = Replace(strText, vbTab, " ", 1, -1, 1)
vntArrayZeilen = Split(strText, vbCrLf, -1, 1)
For lngZeileNr = 14 To UBound(vntArrayZeilen)
vntArrayWerte = Split(vntArrayZeilen(lngZeileNr), " ", -1, 1)
For lngSpalte = 0 To UBound(vntArrayWerte)
If IsNumeric(vntArrayWerte(lngSpalte)) Then
wksZ.Cells(lngZeileNr + 1, lngSpalte + 1).Value = Val(Replace(vntArrayWerte(lngSpalte), ",", _
_
".", 1, -1, 1))
Else
wksZ.Cells(lngZeileNr + 1, lngSpalte + 1).Value = vntArrayWerte(lngSpalte)
End If
Next
Next
End Sub

So Jetzt mein Problem:
Die einzulesene Datei enthaelt mal 1 mal 2 mal 5 leerzeichen zwischen den einzelnen Werten und daher verschieben sich die spalten...
Ich haette aber gerne wert1 in spalte1 wert2 in spalte2 usw...
Vielen Dank fuer eure Muehe schon mal im Vorraus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: txt datei einlesen
29.05.2015 14:43:34
Rudi
hallo,
vntArrayWerte = Split(Worksheetfunction.Trim(vntArrayZeilen(lngZeileNr)), " ", -1, 1)
sollte helfen.
Gruß
Rudi

AW: txt datei einlesen
29.05.2015 15:00:04
Michael
Hi Rudi,
da war doch was, gell, das ist das =Glätten, oder?
Schöne Grüße,
Michael

genau! owT
29.05.2015 15:17:39
Rudi

genau! owT
29.05.2015 15:17:52
Rudi

AW: txt datei einlesen
29.05.2015 14:56:16
Michael
Hallo Mahias,
lies mal das: http://www.ms-office-forum.net/forum/showthread.php?t=155450
oder sieh Dir diesen Code an:
Sub test()
Z = "a1 b2  c3   d4    f5     g"
aZ = Split(Z, " ")
For i = 0 To UBound(aZ)
Debug.Print ""
Next
For i = 10 To 2 Step -1
Z = Replace(Z, String(i, " "), " ")
Next
aZ = Split(Z, " ")
For i = 0 To UBound(aZ)
Debug.Print ""
Next
End Sub

Die Ausgabe erfolgt im "Direktfenster", das blendest Du bitte im VB-Editor mit Ansicht-Direktfenster oder Strg+G ein.
Die mittlere For-Schleife ersetzt alle mehrfachen Leerzeichen von 10 bis 2, sollten mehr vorhanden sein, nimmst Du eben 15 oder so.
Angepaßt an Deinen Code setzt Du das Ding direkt nach Deiner For-Anweisung ein, also so (i ist zwar mit DIM definiert, wird aber nicht anderweitig verwendet):
For lngZeileNr = 14 To UBound(vntArrayZeilen)
For i = 10 To 2 Step -1
vntArrayZeilen(lngZeileNr) = _
Replace(vntArrayZeilen(lngZeileNr), String(i, " "), " ")
Next
vntArrayWerte = Split(vntArrayZeilen(lngZeileNr), " ", -1, 1)

dann müßte es passen (wenn ich keinen Tippfehler drin habe)
Schöne Grüße,
Michael
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige