Andando a caso con risposte e considerazioni...
Per l'errore "Riferimento non valido o non qualificato": c'e' un motivo che ti ha fatto eliminare (all'interno della Sub OneMinuteMacro) l'istruzione
With ActiveWorkbook.WebOptions? Reinseriscila e ti troverai bene.
Se vuoi avviare le schedulazioni all'avvio del file allora in una ipotetica macro di Workbook_Open inserisci la pianificazione del lancio dopo 1 minuto:
- Codice: Seleziona tutto
Private Sub Workbook_Open()
Next1Min = Now + TimeSerial(0, 1, 2)
Application.OnTime NextOneMin, "OneMinuteMacro"
End Sub
La fase di apertura di un file non e' immediata, meglio aspettare che si concluda prima di cominciare con le schedulazioni.
Anzi, per andare sul sicuro potresti inserire la pianificazione di tutte le macro, comprese quelle di controllo; cioe':
- Codice: Seleziona tutto
Private Sub Workbook_Open()
Next1Min = Now + TimeSerial(0, 1, 2)
Application.OnTime NextOneMin, "OneMinuteMacro"
NextOneMin = Now + TimeSerial(0, 14, 0)
Application.OnTime NextOneMin, "Macro15Min"
Next30Min = Now + TimeSerial(0, 30, 0)
Application.OnTime Next30Min, "Macro30Min"
Next60Min = Now + TimeSerial(0, 59, 0)
Application.OnTime Next60Min, "OneHourMacro"
End Sub
Non e' necessario, perche' la OneMinuteMacro avvierebbe la Macro15Min, che poi avvierebbe la Macro30Min, e così per la OneHourMacro; ma se vengono avviate tutte abbiamo da subito tutti i paracadute.
Se ti chiedi perche' quei ritardi strani tra le macro (1'2"; 14'; 30', 59') li ho impostati cosi' per evitare "risonanze" (tipo che dopo un'ora devono essere eseguite tutte e quattro le macro contemporaneamente)
INOLTRE e' necessario che la Sub Workbook_Open sia inserita nel modulo ThisWorkbook (Questa_cartella_di_lavoro, nella tua versione), non nel modulo vba di Foglio1 o in un Modulo standard perche' altrimenti viene ignorata come "macro di evento" ma e' considerata una macro da avviare in altro modo.
Penso di fare cosa utile aggiungendo il codice che puoi usare per verificare se il castello funziona, cioe' questa riga da aggiungere in ognuna delle macro che abbiamo inserito (OneMinuteMacro, Macro15Min etc) subito dopo la riga "Reschedue myself"
- Codice: Seleziona tutto
'Reschedue myself:
NextOneMin = Now + TimeSerial(0, 14, 0)
Debug.Print "Eseguo Macro15Min", Now '<<< IL NOME giusto della macro
Application.OnTime NextOneMin, "Macro15Min"
Questo esempio e' riferito alla Macro15Min, modifica il testo per le altre macro
Poi quando il file e' aperto (e le macro teoricamente in esecuzione periodica), vai sul vba e apri la "finestra Immediata" (dovrebbe bastare la combinazione Contr-g; oppure Menu /Visualizza /Finestra Immediata): qui dovresti trovare traccia di quando le macro vengono eseguite, con un messaggio tipo Eseguo
OneMinuteMacro 02/02/2021 19:30; ogni 15 minuti dovrebbe comparire il msg della Macro15Min, ogni 30 e ogni 60 delle altre macro
Puoi anche lasciare queste istruzioni, non appesantiscono granche' i tempi di esecuzione.
Ciao