Hallo, ich habe ein Excel VBA erhalten, was leider nicht richtig funktioniert.Das Excel soll Daten aus bestimmten Zeilen einer .txt Datei auslesen. Die Zeilen beginnen mit "BMK_", der folgende Datensatz beginnt mit ">" und endet mit "<". Manchmal springt dieser Datensatz aber mittels Zeilenumbruch in eine zweite Zeile.
In dem Code wird versucht, den Datensatz so zu bereinigen: "tempValue = tempValue & Trim(line)", das klappt aber nicht. Hier ein Beispiel für den Datensatz:
BMK_LA_DETAILS (2106) >Frank Mustermann, geb. am 12.01.1970
(56321)<
Raushaben möchte ich "LA_DETAILS" und "Frank Mustermann, geb. am 12.01.1970 (56321)"
Hat jemand eine Lösung, wie man das lösen kann?
Herzlichen Dank!
' Verarbeitet eine Datenzeile und fügt sie ins Worksheet ein
Sub ProcessDataLine(line As String, currentSheet As Worksheet, ByRef outputRow As Long, ByRef tempValue As String, ByRef readingValue As Boolean)
Dim namePart As String
Dim valuePart As String
If InStr(line, ">") > 0 Then
' Start des Wertes gefunden
namePart = ExtractName(line)
tempValue = Mid(line, InStr(line, ">") + 1)
If InStr(tempValue, "<") > 0 Then
' Wert endet in derselben Zeile
valuePart = Left(tempValue, InStr(tempValue, "<") - 1)
WriteData currentSheet, outputRow, namePart, valuePart
tempValue = ""
readingValue = False
Else
readingValue = True
End If
ElseIf readingValue Then
' Wert über mehrere Zeilen zusammensetzen
tempValue = tempValue & Trim(line)
If InStr(line, "<") > 0 Then
(Anmerkung Kerstin: müßte das nicht auch "If InStr(line, "<") = 0 Then" heissen?
valuePart = Left(tempValue, InStr(tempValue, "<") - 1)
namePart = ExtractName(line) ' Hole Namen erneut
WriteData currentSheet, outputRow, namePart, valuePart
tempValue = ""
readingValue = False
End If
End If
End Sub
|