Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fileimport

Fileimport
14.11.2006 08:11:18
Metman
Hallo leute,
ist es möglich eine Datei(txt,cvs) zu importieren die 200000 (zweihunderttausend) Zeilen hat ABER gewollt sind nur 40000?
Ich versuchs schon seit gestern aber es funktioniert nicht.
Die restlichen Zeilen sind unwichtig. wichtig sind nur die ersten 40000.
Ich kriegs einfach nicht hin.
Hat jemand nen Tipp?
gruß

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

Betreff
Datum
Anwender
Anzeige
AW: Fileimport
14.11.2006 08:21:15
eres
Hallo Metman,
hilft Dir dieser Ansatz:
Open Range("InputFile") For Input As #1
Zielzeile = 1
Do Until EOF(1)
Line Input #1, TL
If left(TL, 5) = "xxxxx" Then
Cells(Zielzeile, 1) = TL
Zielzeile = Zielzeile + 1
End If
Loop
Close #1
(hier werden alle Zeile eingelesen, deren erste 5 Zeichen gleich "xxxxx" sind.
Musst Du halt für Deine Bedürfnisse anpassen.
Gruss
erwin
AW: Fileimport
14.11.2006 08:32:57
Heiko
Hallo Metmann,
z.B. so:

Sub TextDatRein40000()
Dim strPfad As String, strHelp As String
Dim arrInput() As String
Dim lngPos As Long
Application.ScreenUpdating = False
' Pfad anpassen !!!
strPfad = "H:\EXCEL\EXCEL Privat\Beispiele\Dat_Test_Dateien\TextDat.txt"
Open strPfad For Binary As #1
strHelp = Space(LOF(1))
Get #1, , strHelp
arrInput = Split(strHelp, vbCrLf)
Close #1
For lngPos = LBound(arrInput) To 39999
ActiveWorkbook.Worksheets("Tabelle3").Cells(lngPos + 1, 1) = arrInput(lngPos)
Next lngPos
Application.ScreenUpdating = True
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Fileimport
14.11.2006 08:48:23
Metman
Super, danke Heiko, das hat geklappt.
Danach habe ich gesucht.
Hab nur was ergänzt :
strPfad = Application.GetOpenFilename("Dateien " & _
"(*.txt; *.csv;*.asc),*.txt; *.csv; *.asc")
Hätte da noch eine Frage : Nach dem Importieren benutz ich TextToColumn um aus den Zeilen Spalten zu machen, Trennzeichen is Space.

Sub Import_sortiert()
Application.ScreenUpdating = False
With Sheets("imported")
.Range("A1:A65536").TextToColumns Destination:=.Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False, _
OtherChar:="/", _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1))
ActiveSheet.Columns("A:Z").AutoFit
ActiveSheet.Columns("A:Z").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End With
Application.ScreenUpdating = True
End Sub

Es funktioniert zwar wunderbar, aber er ändert eine Spalte mit wichtigen Werten sehr komisch ab.
Bsp.
0.9750
0.9990
1.0020
1.0450
Nachdem TextToColum :
0.9750
0.9990
10.020 (steht als zehntausend und 20 drin)
10.450
Die Werte sind Zeitangaben in Sekunden. Von einer Sekudne auf 10tausend? Bin bisschen ratlos im moment ;)
Schonmal danke und riesendank für den Importcode
gruß
Anzeige
AW: Fileimport
14.11.2006 09:09:58
Heiko
Hallo Metman,
also eine Möglichkeit ist bei TextInSpalten die Spalte mit den Sekundenwerten in TEXT zu formatieren (Mit dem Recorder aufzeichen dann siehst was du das setzen mußt) hat aber den Nachteil das dann halt text ist.
Zweite Möglichkeit beim Import schon den Punkt durch Komma zu ersetzen, z.B. so:

Sub TextDatRein40000()
Dim strPfad As String, strHelp As String
Dim arrInput() As String
Dim lngPos As Long
Application.ScreenUpdating = False
' Pfad anpassen !!!
strPfad = "H:\EXCEL\EXCEL Privat\Beispiele\Dat_Test_Dateien\TextDat.txt"
Open strPfad For Binary As #1
strHelp = Space(LOF(1))
Get #1, , strHelp
Close #1
arrInput = Split(Replace(strHelp, ".", ","), vbCrLf)
For lngPos = LBound(arrInput) To 39 '999
ActiveWorkbook.Worksheets("Tabelle3").Cells(lngPos + 1, 1) = arrInput(lngPos)
Next lngPos
Application.ScreenUpdating = True
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Fileimport
14.11.2006 09:33:13
Metman
Hallo Heiko,
daran habe ich auch schon gedacht bin aber an der Umsetzung gescheitert.
Hat super funktioniert.
Ziehe mein Hut vor dir. DANKE.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige