PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAapplication.ontimeapplication.ontime
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2017-11-23 12:12
 

 Hej. Jag har ett excelark som är öppet dygnet runt på en dator i en produktionslokal. Detta excelark visar olika produktionsdata som hämtas ur olika SQL-databaser. 
Runt midnatt behöver jag köra ett slags "Nattjobb" som kopierar dagens data till en historiktabell. Jag har fixat nattjobbs-makrona som gör jobbet och triggar dom med Application.Ontime. 
Jag har lagt koden för Application.Ontime i suben "Workbook_Open" för att ställa tiderna då nattjobben ska köras. Detta fungerar dock bara en gång. Alltså första dygnet.

Kod: 

Private Sub Workbook_Open()

Application.OnTime TimeValue("23:59:50"), "Nattjobb1"

Application.OnTime TimeValue("00:00:01"), "Nattjobb2"

End Sub

Är det så att Application.Ontime bara sätter en "timer" för ett tillfälle? Att jag måste köra Application.Ontime en gång varje dag för att natt-makrona ska köras varje natt?

Nytt inlägg
 2017-11-24 10:22
 
 Ändrad av Christian  på 2017-11-24 11:57:56
Ja det stämmer. Den körs endast en gång. Här är en otestad lösning (evighetsloop). testa med skyddshandskar och skyddshjälm...

Private Sub Workbook_Open()

'Dont matter what is passed first iteration, except for the boolean
Call myCaller(initiate, 0, false)
End Sub

Function myCaller(myTime As String, k As Long, skipFirstCall As Boolean)
Dim myFunctionsAsStr As String: str = "NattJobb" & k
Dim myTimes As Variant: myTimes = Array("00:02:01", "11:01:01")
Dim k As long


'Kör dina olika nattjobbsSubbar, när de har blivit triggade av OnTime functionen"
'Se till att lägga in tiderna i rätt ordning i arrayen, tid1 kommer köras av Nattjobb1 osv.
If skipFirstCall Then
Application.Run myFunctionsAsStr
End If '

En sekund delay innan den laddar nästa set med Tider att köras.
Sleep (1000)

'Lägger in efterföljande nattjobb recursivt (evighetsloop, triggad av varje Ontime event)
For k = 0 To UBound(myTimes)
Application.OnTime myTimes(k), myCaller(myTimes(k), k + 1, True)
Next k
End Function

Mvh Christian
Nytt inlägg
 2017-12-11 18:14
 

 Jag vågade mig inte riktigt på att köra den här utan hittade ett annat sätt att lösa uppgiften. Men tack ändå!

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAapplication.ontimeapplication.ontime

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter