Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Domenico,
come da titolo, la mia è una curiosità.
ThisWorkbook:
Private Sub Workbook_Open()
CloseMe
End Sub
In un modulo:
Sub CloseMe()
Application.OnTime Now + TimeValue("00:00:10"), "OpenMe"
ThisWorkbook.Close False
End Sub
Sub OpenMe()
MsgBox "Ciao"
End Sub
Semplicemente il file viene chiuso e riaperto dopo 10 sec.
La curiosità è la seguente: come fa excel a riaprire il file per eseguire la sub OpenMe() ?
Cioè dove viene "conservata" la schedulazione di "OpenMe" ?
Il metodo OnTime è un metodo di Excel ed è indipendente di qualsiasi cartella di lavoro e chiamate al metodo sono gestite, come tutte le altre impostazioni dell'Applicazione, dall'Applicazione, ovvero Excel.
Infatti, se il file in cui si trova la chiamata fosse chiusa prima che la procedura interessata sia stata eseguita, il file verrebbe riaperto per eseguire la macro.
Come esempio banale, considera il seguente codice:
'=========>>
Option Explicit
'--------->>
Public RunWhen As Double
Public Const cRunIntervalSeconds = 10 '\ 10 Secondi
Public Const cRunWhat = "myMacro"
'--------->>
Public Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime EarliestTime:=RunWhen, _
Procedure:=cRunWhat, _
Schedule:=True
End Sub
'--------->>
Public Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, _
Procedure:=cRunWhat, _
Schedule:=False
End Sub
'--------->>
Public Sub myMacro()
Call MsgBox( _
Prompt:="Ciao Domenico a: " _
& vbNewLine _
& Time, _
Buttons:=vbInformation, _
Title:="REPORT")
StartTimer
End Sub
'<<=========
Ora avvia la macro StartTimer e immediatamente chiudi il file. Dopo alcuni secondi, il file sarà riaperto da Excel per eseguire la procedura miaMacro e vedrai il messaggio. Nota che, in tal caso, il file verrebbe lasciato aperto by Excel.
===
Regards,
Norman