Wie ChrisL schon schieb, Diana,
es ist mit Programmieraufwand verbunden, insbesondere wenn man eine Benutzerfreundliche Eingabe ermöglichen möchte, die u.a. auch Plausibilitätsabfragen der Eingabe beinhaltet.
Daher hier nur eine Idee eines Grundkonzepts für eine Modul-SUB, das noch nicht in allen Richtungen ausgetestet sein kann, da mir entsprechende Datensätze nicht zum Testen vorliegen:
Option Explicit
Type Record
Datum As Date
Zeit As Date
Wert As Double
End Type
Sub ReadData()
Dim DateiName As String
Dim r As Long, rHeader As Integer 'Zeilenzähler in der Datei
Dim c As Integer, cmax As Integer 'Spaltenzähler in der Datei
Dim tr As Long ' Zeilenzähler auf dem Arbeitsblatt
Dim d1 As Date, d2 As Date ' Start/Enddatum wird über InputBox abgefragt
Dim intxt As String 'eingelesene Textzeile aus der Datei
Dim pos1 As Integer, temp As String 'Gebrauchswerte beim analysieren des Textzeile
Dim rec As Record 'benutzer definierer Datentyp (siehe oben)
DateiName = Application.GetOpenFilename("Daten (*.dat), *.dat")
If DateiName = "False" Then
MsgBox "Datei " & DateiName & " kann nicht geöffnet werden"
End If
Open DateiName For Input As #1
d1 = CDate(InputBox("Startdatum"))
d2 = CDate(InputBox("Enddatum"))
cmax = 3 'maximale Spaltenzah in der Datei
c = 0
rHeader = 8 'Anzahl der Kopfzeilen in der Datei
r = 0
tr = 0 ' Offset für die Ausgabezeilen in dem Arbeitsblatt
While Not (EOF(1)) And d2 + 1 > rec.Datum
Line Input #1, intxt
r = r + 1
If r > rHeader Then
c = 0
While Len(intxt) > 0
c = c + 1
intxt = Replace(intxt, ",", ".")
pos1 = InStr(intxt, " ")
If (pos1 > 0 And c <= cmax) Or c = cmax Then
If pos1 > 0 Then
temp = Left(intxt, pos1 - 1)
Else
temp = intxt
End If
Select Case c
Case 1: rec.Datum = CDate(temp)
Case 2: rec.Zeit = CDate(temp)
Case 3: rec.Wert = Val(temp)
End Select
If pos1 > 0 Then
intxt = Mid(intxt, pos1 + 1)
Else
intxt = ""
End If
End If
Wend
If rec.Datum >= d1 And rec.Datum < d2 + 1 Then
tr = tr + 1
Cells(tr, 1) = rec.Datum
Cells(tr, 2) = rec.Zeit
Cells(tr, 3) = rec.Wert
End If
End If
Wend
Close #1
End Sub
Ich hoffe, dass dies nach Deinen Wünschen abänder- und erweiterbar ist.
Gruß!
ennoch,