ich habe ein Problem, bei dem mir Josepf Ehrensberger vor einigen Tagen schon super weiterhelfen konnte.
Ich muss eine Textdatei einlesen und daraus gezielt Daten auslesen. Im ersten Fall sind die Daten in der
Textdatei durch "Tabstopp`s" von einander getrennt.
Dazu habe ich den nachstehenden Code von Joseph noch einmal aufgeführt.
'---------------------------------------------------------------------------------------------------
Sub Daten_Holen()
Dim iRow As Integer, iCol As Integer
Dim sFile As String, sTxt As String
Dim iFile As Integer
Dim tmp As Variant
Dim lRow As Long
lRow = 5 'Startzeile der Einträge der Textdatei
sFile = Range("A1").Value 'Name der Testdatei, die geöffnet werden soll, hier "event.txt"
iFile = FreeFile
fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then 'mitteilen welche Datei geöffnet wird, nicht zwingend erforderlich
MsgBox "Open " & fileToOpen
End If
If Dir(sFile) = "" Then
Beep
MsgBox "Die Textdatei wurde nicht gefunden !!!"
Exit Sub
End If
sSearch = "Name" 'Name steht im 7.Block der Textdatei
Open sFile For Input As iFile
Do Until EOF(1)
Input #iFile, sTxt
MsgBox sTxt 'aber mit Vorsicht einsetzen, da die gesamte Textdatei feldweise angezeigt wird!!!
If InStr(sTxt, sSearch) Then
tmp = Split(sTxt, Chr(9)) 'Feldtrenner "Tabstopp"
Cells(lRow, 1) = tmp(0) 'Eventname im 7.Datenfeld, tmp(7)
Cells(lRow, 2) = tmp(14) & " / " & tmp(8) 'Alarm-Unit tmp(14) / Alarm-Text tmp(8)
lRow = lRow + 1 'Zeilenzähler hochzählen für nächsten Eintrag
End If
Loop
Close iFile
End Sub
'---------------------------------------------------------------------------------------------------
... nun aber zu meinem eigentlichen Problem. In einem zweiten Fall muss ich ein Textdatei verarbeiten
in der als Feldseparator ein "Komma" verwendet wird. Das wäre dann das Zeichen "Chr(44)" für Komma.
Jedoch verzweifle ich daran, wenn ich versuche die Zeilen ...
....
tmp = Split(sTxt, Chr(44))
Cells(lRow, 1) = tmp(7) 'Datenfeld 7
....
zu verwenden. Ich bekomme dann immer den Laufzeitfehler "9" gezeigt. Trage ich in der zweiten Zeile
anstatt tmp(7) eine tmp(0) ein, wird mir das Datenfeld angezeigt in dem der Suchbegriff "Name" enthalten
ist. Das ist aber das Datenfeld 6. Ich benötige aber immer das folgende Datenfeld 7 mit den sich ständig
verändernden Inhalten.
Was mache ich denn falsch? Trotz Onlinehilfe und ASCII-Zeichensatz, ich komme nicht weiter.
Kann mir jemand weiterhelfen?
Gruß Axel