Afbreken van een procedure op tijd

Status
Niet open voor verdere reacties.

Sickbock

Gebruiker
Lid geworden
14 jul 2012
Berichten
39
IK heb een automatische presentatie in Excel waarbij via webqueries van verschillende internetsites gegevens op de laatste stand worden bijgewerkt. Nu kan het voorkomen dat dit contact zoeken met een internetsite en downloaden van gegevens relatief lang duurt of dat een internetsite zelfs even helemaal niet beschikbaar is. In dat geval blijft de presentatie "hangen" bij het vernieuwen van deze gegevens. In dat geval wil ik het vernieuwen overslaan en de presentatie voortzetten met de "oude" gegevens. Daartoe moet de procedure die de gegevens vernieuwd na een van tevoren bepaalde tijdsduur afgebroken worden. Weet iemand een methode om een procedure na een bepaalde tijd af te breken en met een andere procedure te vervolgen?
Ik heb iets geprobeerd met het Application.OnTime commando maar dat werkt niet

Code:
Application.OnTime Now + TimeValue("00:00:15"), "mijn_inleesprocedure", False
 
SickBock,

De Application.OnTime heeft de volgende opbouw
Code:
Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

Probeer hem eens in de volgende opbouw:
Code:
Application.OnTime EarliestTime:=Now +TimeValue("00:05:00"), _
    Procedure:="mijn_inleesprocedure", _
    LatestTime = Now + Timevalue("00:05:30"), _
    Schedule:=True

Dit zal er voor zorgen dat iedere vijf minuten geprobeerd wordt om de procedure te starten, lukt dit niet zal
de LatestTime er na 30 seconden voor zorgen dat de procedure wordt afgebroken.

Veel Succes
 
Laatst bewerkt door een moderator:
Elsendoorn, bedankt voor je reactie. Dit lost echter mijn probleem niet op. Waarschijnlijk moet ik mijn probleem iets nader toelichten.
Ik heb op een werkblad met de hand een webquery aangemaakt met als sleutelcel A1.
Met behulp van de procedure “inlees” kan ik de gegevens van de webquery aanpassen aan de laatste stand van zaken op de desbetreffende internetsite.

Code:
Sub inlees()  

	Cells(1, 1).Select
     	Selection.QueryTable.Refresh BackgroundQuery:=False

End Sub

Wanneer dit vernieuwen niet lukt, b.v. wanneer er geen internetverbinding is of de desbetreffende internetsite niet kan worden gevonden, dan blijft de afloop van mijn totale programma hangen op deze procedure. In dat geval wil ik de procedure kunnen afbreken, en verder gaan met het programma de meest gegevens, die ik bij de laatste keer inlezen heb opgehaald. Meer recente gegevens zijn immers niet verkrijgbaar.

De door u voorgestelde Application.OnTime oplossing zal de procedure “inlees” starten om 5 minuten na middernacht, zodra binnen een tijdsvenster 30 seconden na de starttijd, Microsoft Excel in de modus “gereed” staat, dus wanneer er geen andere procedure wordt uitgevoerd. Kan de procedure binnen dit tijdsvenster niet worden gestart, dan wordt de procedure overgeslagen. Dit is dus niet wat ik wil, want de afloop kan dan nog steeds blijven hangen in de procedure “inlees”

Ik zou willen dat er bij de start van de procedure “inlees” een tijd wordt gestart en dat na verstrijken van een bepaalde tijd de procedure “inlees” wordt afgebroken en wordt verder gegaan met de afhandeling van de rest van het programma.
 
Laatst bewerkt:
Code:
Sub M_snb()
   t1=time

   with thisworkbook.sheets(1).querytables(1)
     do
       doevents
       if .refreshing and datediff("s",t1,time)>3 then .cancelrefresh
     loop until .refreshing=False
   end with
End Sub

of

Code:
Sub M_snb()
   with thisworkbook.sheets(1).querytables(1)
     if .refreshing then application.wait DateAdd("s", 3, Now)
     if .refreshing then .cancelrefresh
   end with
end sub
 
Laatst bewerkt:
Bedankt snb voor je bijdrage. Ik snap alleen nog niet helemaal wat ik met bovenstaande code aan moet. Moet ik die integreren in mijn reeds bestaande code? Zo ja, hoe dan wel?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan