Das Ziel ist es, jede Datei einzeln in ein Array Data(15000000) einzulesen und anschließend die Zeiten der einzelnen Herzschläge (R-Zacken) zu bestimmen und in je ein Arbeitsblatt einzutragen.
Das Makro zum Einlesen der Werte und anschließender Suche nach den Zacken funktioniert (Dank der Hilfe von euch) inzwischen.
Die Messzeit ergibt sich aus der Startzeit, die im Dateinamen enthalten ist, plus 0,08*Nummer der Anzahl der IntegerWerrte der R-Zacke und soll im Format TT.MM.JJJJ hh:mm:ss,000 gespeichert werden.
Pfad= "D:\EKG\Rohdaten" { im Beispiel steht noch der alte Pfad }
Name= "2111492463R" & "20220702073116" => 02.07.2022 07:31:16,000
Jetzt fehlt mir eine Rahmen-Routine, die den Pfad durchsucht und alle (später auch neue) Dateien einliest. Und das vorhandene Makro aufruft.
Damit möchte ich die händische Eingabe des Open-Befehls automatisieren.
Private Sub Read_Array()
Dim ff, mVal As Integer, intCellRow%, data(15000000) As Integer
'Dim i As Long
Dim R_Time, iSearch As Long
'Dim ti
'ti = Timer
ff = FreeFile
i = 0
intCellRow = 0
Open "C:\Users\Admin.DESKTOP-TGURU7Q\AppData\Local\ECG Browser\DATA\userfiles\subusr\1\211149246320220703013506" For Binary Access Read As ff
Do While Not EOF(ff)
Get ff, , mVal
data(i) = mVal
i = i + 1
Loop
Close ff
mAll_i = i
'MsgBox Timer - ti & " sec."
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Application.Calculation = xlCalculationManual 'automat.Berechnung ausschalten
i = 4
oldMax = 0
Do
i = CLng(i + 1)
mSteigung = CLng(data(i)) - CLng(data(i - 1))
If mSteigung oldMax Then
oldMax = data(iSearch)
oldSearch = iSearch
mMax_i = i + mSearch + 1
R_Time = i + mSearch
End If
Next
mRRCount = mRRCount + 1
Cells(mRRCount, 1) = mMax_i
oldMax = 0
i = i + 40
End If
Loop Until i > mAll_i - 5
Application.Calculation = xlCalculationAutomatic 'automat.Berechnung einschalten
Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
End Sub