AW: bestimmte Zeilen aus TXT Datei einlesen
IngGi
Hallo André,
versuch's mal so:
Sub Einlesen()
Dim vntDaten As Variant
ReDim vntDaten(2, 0)
Dim vntAusgabe As Variant
Dim strZeile As String
Dim intZeichen As Integer
Dim intFF As Integer
Dim lngZeile As Long
Dim lngSpalte As Long
'Textdatei zum Einlesen öffnen
intFF = FreeFile
Open "C:\Temp\Test.txt" For Input As #intFF
'Kopfzeilen der Datei übergehen
For lngZeile = 1 To 6
Line Input #intFF, strZeile
Next 'lngZeile
'Bis Dateiende zeilenweise einlesen
Do Until EOF(intFF)
'Eine Zeile einlesen
Line Input #intFF, strZeile
'Prüfen, ob Leerzeile - dann nicht tun
If Len(strZeile) >= 94 Then
'Prüfen, ob etwas ausser Blank, Minuszeichen und Ziffern vorhanden
For intZeichen = 86 To 94
If Asc(Mid(strZeile, intZeichen, 1)) <> 32 And _
Asc(Mid(strZeile, intZeichen, 1)) <> 45 And _
(Asc(Mid(strZeile, intZeichen, 1)) < 48 Or _
Asc(Mid(strZeile, intZeichen, 1)) > 57) Then
'Drei Spalten an Datenfeld übergeben
vntDaten(0, UBound(vntDaten, 2)) = Left(strZeile, 19)
vntDaten(1, UBound(vntDaten, 2)) = Mid(strZeile, 86, 9)
vntDaten(2, UBound(vntDaten, 2)) = Mid(strZeile, 122, 11)
'Datenfeld um eine Zeile erweitern
ReDim Preserve vntDaten(2, UBound(vntDaten, 2) + 1)
'Bearbeitung der Zeile abschließen und zur nächsten Zeile gehen
Exit For
End If
Next 'intZeichen
End If
Loop
'Textdatei schließen
Close #intFF
'Datenfeld transponieren und dabei die Dimensionierung der Zeile
'um die letzte (leere) Position kürzen.
'Das Datenfeld muss für eine direkte Ausgabe in einen Zellbereich
'transponiert werden, da hierbei die Zeilendimension an erster
'Stelle stehen muss.
ReDim vntAusgabe(UBound(vntDaten, 2) - 1, 2)
For lngZeile = 0 To UBound(vntDaten, 2) - 1
For lngSpalte = 0 To 2
vntAusgabe(lngZeile, lngSpalte) = vntDaten(lngSpalte, lngZeile)
Next 'lngSpalte
Next 'lngZeile
'Ausgabe auf aktives Tabellenblatt
Range("A1") = "1 Bis 19"
Range("B1") = "86 Bis 94"
Range("C1") = "122 Bis 132"
Range("A2").Resize(UBound(vntAusgabe, 1) + 1, _
UBound(vntAusgabe, 2) + 1) = vntAusgabe
End Sub
Gruß Ingolf