Unkompliziert gehalten, so:
Option Explicit
Sub Test()
Dim strFileContent As String
Dim FN As Integer
FN = FreeFile
Open "X:\file.txt" For Input As #FN
strFileContent = Input(LOF(FN), #FN)
Close #FN
Dim astrValues() As String
Dim vntValue As Variant
astrValues = Split(GetValue("Windenergieanlage", strFileContent), ",")
Debug.Print "[Windenergieanlage]"
If UBound(astrValues) >= 0 Then
For Each vntValue In astrValues
Debug.Print " * " & Trim$(vntValue)
Next
'' ODER gezielt abfragen:
' Debug.Print Trim$(astrValues(0)) 'Hersteller
' Debug.Print Trim$(astrValues(1)) 'Typ
'' ...
Else
Debug.Print " ! nicht gefunden"
End If
astrValues = Split(GetValue("Getriebe", strFileContent), ",")
Debug.Print "[Getriebe]"
If UBound(astrValues) >= 0 Then
For Each vntValue In astrValues
Debug.Print " * " & Trim$(vntValue)
Next
'' ODER gezielt abfragen:
' Debug.Print Trim$(astrValues(0)) 'Getriebehersteller
' Debug.Print Trim$(astrValues(1)) 'Getriebetyp
'' ...
Else
Debug.Print " ! nicht gefunden"
End If
End Sub
Private Function GetValue(Key As String, Expression As String) As String
'
' Aufbau >> KEY: KEYVALUE
'
Dim s As Long
Dim e As Long
'KEY suchen
s = InStr(1, Expression, Key & ":", vbTextCompare)
If s = 0 Then Exit Function
'KEYVALUE lesen
s = s + Len(Key) + 1
e = InStr(s, Expression, vbNewLine, vbBinaryCompare)
'wenn KEYVALUE nicht vorhanden ist...
If s = e Then
'... und es noch weitere Daten danach gibt...
If e < Len(Expression) Then
'... nehmen wir die Zeile darunter als KEYVALUE
s = e + Len(vbNewLine)
e = InStr(s, Expression, vbNewLine, vbBinaryCompare)
Else
Exit Function
End If
End If
GetValue = Mid$(Expression, s, e - s)
End Function
|