Eseguire una macro all'apertura del foglio Excel


Una domanda frequente è: Come è possibile fare in modo che una macro venga eseguita all'apertura del file Excel?

All'apertura di un file può essere infatti utile eseguire delle routine in modo automatico che predispongano il foglio per l'utilizzo, un esempio può essere nascondere i fogli di lavoro, posizionare il foglio in una certa configurazione oppure eseguire l'accesso a una pagina web o a un database per recuperare i dati aggiornati su cui lavorare.
Per prima cosa bisogna dire che Excel gestisce gli EVENTI.
Si tratta semplicemente di questo:Ogni volta che l'utente compie un'azione per cui Excel deve fare qualcosa e intragire con l'utente stesso, come ad esempio spostate il mouse, cliccate sul tasto sinistro, premete un tasto della
tastiera, aprite un foglio, cambiate foglio, aprite un file etc, verifica se associato all'evento che è appena accaduto  esiste una porzione di codice (nota bene: UNA PORZIONE DI CODICE e NON una MACRO) da eseguire.
La distinzione tra Porzione di codice e Macro, sebbene sottile, è fondamentale. Le Macro devono essere inseriti nei MODULI come indicato nel tutorial dedicato.
La porzione di codice deve essere invece inclusa direttamente all'interno del Foglio di lavoro o all'interno del file (Workbook) per il quale vogliamo che, all'accaimento dello specifico evento, Excel reagisca eseguendo quelle righe di codice: dovremo scegliere all'interno dell'editor VBA l'elemento cui si riferisce l'evento che vogliamo intercettare. A questo evento dovremo associare le nostre righe di codice.

Se desideriamo gestire l'evento che si riferisce a tutto il file (Workbook) cliccheremo sulla voce Workbook. Se dediseriamo invece gestire un evento quando ci troviamo all'interno del file Foglio1 dovremo cliccare sulla voce Foglio1 all'interno dell'area Peogetti dell'editor VBA come indicato nell'immagine seguente:



In questa pagina ci focalizzeremo sull'evento che Excel genera all'atto dell'apertura del File. Ovviamente trattandosi di un evento associato a tutto il "file" e non associato a uno specifico foglio si troverà all'interno del la voce "Workbook".
L'evento che viene eseguito ad ogni apertura di file è il segunete:

Private Sub Workbook_Open()

End Sub

Ovviamente normalmente questa procedura non contiene righe di codice quindi l'utente non si accorge nemmeno che Excel, all'apertura esegue questa routine dato che la routine, banalmente, non esiste.
E' sufficiente ora copiare il codice che volete che venga eseguito all'interno di queste due righe e il gioco è fatto. Ad esempio nell'immagine qui sotto il codice semplicemente nasconde il foglio "Sheet1" all'apertura del file Excel:



Da questo momento in poi, ogni volta che apriremo il fogliod i lavoro, Excel per prima cosa  verificherà l'esistenza del codice di gestione dell'evento, lo eseguirà e solo successivamente trasferirà il controllo all'utente.

La gestione degli eventi è molto potente ed è stata usata estensivamente per la creazione di giochi interattivi descritti nel libro "Giocare e Vincere con Excel" di cui vi consigliamo la lettura.