AW: Schleife zum Einlesen
16.11.2016 09:47:48
Fennek
Hallo Rainer,
hier der Entwurf eines Codes zum Einlesen von 3 csv-Dateien, die alle ca 2 Sekunden erneuert werden. Falls in xl Eingaben von Hand gemacht werden, kann dies das Timing stören.
Bitte versuche zuerst den Code zu verstehen und nimm die nötigen Anpassungen, z.B. Pfad oder die Wiederholungsrate, vor.
Wenn das Einlesen klappt, die Berachnung liegt ja bereits vor, kann man den Export der Ergebnisse anhängen. Falls möglich wären längere Intervalle (10 Sekunden?) besser.
Public Datei(2) As String
Public SpeicherZeit(2) As Date
Sub Start()
'starten BEVOR das Messen beginnt
Dim i As Integer
Datei(0) = "c:\tmp\x1.csv"
Datei(1) = "c:\tmp\x2.csv"
Datei(2) = "c:\tmp\x3.csv"
For i = 0 To 2
SpeicherZeit(i) = FileDateTime(Datei(i))
Next i
End Sub
Sub Einlesen()
Dim i As Integer
Dim WB As Workbook
Dim Import As Worksheet
Set Import = ThisWorkbook.Sheets("Import")
Debug.Print "neu"
Sp = Array(2, 5, 8)
For i = 0 To 2
If FileDateTime(Datei(i)) > SpeicherZeit(i) Then
Set WB = Workbooks.Open(Datei(i), , , , , , , , ",")
lr = WB.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
WB.Sheets(1).Range(WB.Sheets(1).Cells(1, 1), WB.Sheets(1).Cells(lr, 2)).Copy Import. _
Cells(8, Sp(i))
Import.Cells(6, Sp(i)) = WB.Sheets(1).Name
SpeicherZeit(i) = FileDateTime(Datei(i))
WB.Close
Set WB = Nothing
End If
DoEvents
Next i
If Import.Cells(1, 1) = 0 Then Application.OnTime Now + TimeValue("00:00:02"), "Einlesen"
End Sub
mfg