Excel - Dove e come inserire il codice Visual Basic - VBA (Update)

Livello tecnico : Base

Riepilogo
Livello tecnico: Conoscenza di base di Visual Basic for Applications Si applica a: Excel (2000/2002/2003/2007/2010/2013)
Dettagli

NOTA. Gli esempi ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per un loro uso scorretto. Utilizzate gli esempi forniti o file di prova per i vostri test. La correzione delle eccezioni (errori) e il controllo del tipo di dati inserito è solo parziale. I file vogliono essere un semplice esempio che illustra come sia possibile automatizzare Excel e sono forniti solo a scopo dimostrativo.

Situazione.
Avete trovato in una pagina Internet, oppure avete avuto in risposta ad una vostra richiesta in un forum o in un newsgroup, del codice Visual Basic da copia/incollare nel vostro file di Excel. Ok, tutto molto bello e quasi sicuramente farà ciò che volete, ma... ma dove metterlo?.

IMPORTANTE!!! Prima di cominciare!!!
Fidarsi è bene, non fidarsi è meglio...;-) . Fate sempre una copia del vostro file *prima* di provare la soluzione che avete trovato in Internet o che avete avuto in risposta ad una vostra richiesta. Provate poi con la copia del file(più di una volta) verificando che tutto funzioni per il meglio anche, ad esempio, selezionando un foglio diverso, celle diverse, ecc. Non sempre una macro che funziona come deve se ho selezionato il Foglio1, selezionado ad esempio il Foglio2 si comporta come mi aspetto. E tranquilli, nella maggior parte dei casi non siete voi ad aver fatto qualcosa di sbagliato, ma è chi posta il codice che fa le cose a cuor leggero...

1 - Capire.
Leggete con attenzione la risposta che avete avuto o la pagina in cui avete trovato il codice. Nel primo caso cercate di capire, se sono presenti, le indicazioni date da chi vi ha risposto. E' indicato dove copiare il codice? Vi sono spiegazioni su cosa fa il codice? Avete l'impressione che non sia stato capito il vostro problema? Se avete dubbi, chiariteli chiedendo ulteriori spiegazioni. Va bene che, come consigliato, state lavorando su di una copia del file, ma il codice potrebbe anche puntare ad altre directories, files o a *cose* del sistema operativo e di tutto quello non abbiamo una copia... Se invece avete trovato il codice in una pagina in Internet e leggendo quanto riportato avete qualche dubbio, chiedete aiuto nei forum dedicati(ad esempio per Excel qui: Community di Excel) indicando il link alla pagina con il codice, cosa vorreste fare e se la soluzione trovata è quella più indicata.

2 - Dove copiare?
Il codice può essere copiato:

  • in  un modulo standard
  • nel modulo di un foglio
  • nel nel modulo di codice di ThisWorkbook (Excel 2000/2002(Xp)/2003/2007)
  • nel modulo di codice di Questa_cartella_di_lavoro (Excel 2010/2013)
  • in un modulo di classe

Se nella risposta avuta o nella pagina Internet non trovate indicazioni su dove copiare il codice, rileggete il punto 1 e seguite i consigli che vi trovate. Una nota: ThisWorkbook e Questa_cartella_di_lavoro sono la stessa cosa(lo stesso oggetto) ma non si sa per quale motivo nella localizzazione italiana della versione 2010 e seguenti di Excel hanno italianizzato il nome. Mah, mistero...

3 - Dove trovo questi moduli?
Come prima cosa ci portiamo nell' editor del Visual Basic di Excel. Per far questo, indipendentemente dalla versione di Excel che utilizziamo, una volta aperto il nostro file è suffcente premere assieme i tasti ALT e F11 (normalmente ci si riferisce a questa operazione con: ALT+F11). Questa la schermata che abbiamo a video:

  • 3.1 - Se devo inserire il codice in un modulo standard (generalmente ci si riferisce al modulo standard come: modulo), seleziono: Inserisci (in alto nella barra dei menu) e quindi Modulo. Compare a video un foglio bianco dove andrò ad incollare il codice.
  • 3.2 - Se devo inserire il codice nel modulo di codice del foglio (di quale foglio me lo deve indicare chi mi ha fornito il codice, ma normalmente ci si riferisce al foglio sul quale la macro deve essere eseguita), faccio doppio click sul nome del foglio nella finestra Progetto-VBAProject( a sx nell'immagine). Compare a video un foglio bianco(il modulo di codice del foglio) dove andrò ad incollare il codice.
  • 3.3 - Se devo inserire il codice nel modulo di codice di ThisWorkbook o di Questa_cartella_di_lavoro (vedi punto 2 per la differenza fra i due) , faccio doppio click su ThisWorkbook o su Questa_cartella_di_lavoro nella finestra Progetto-VBAProject. Compare a video un foglio bianco(il modulo di codice di ThisWorkbook o di Questa_cartella_di_lavoro) dove andrò ad incollare il codice.
  • 3.4 - Se devo creare un modulo di classe ed incollare il codice nel suo modulo di codice, seleziono : Inserisci (in alto nella barra dei menu) e quindi Modulo di classe. Viene creato il modulo di classe e compare a video un foglio bianco(il modulo di codice del modulo di classe) dove andrò ad incollare il codice.

Una volta incollato il codice, posso tornare in Excel premendo nuovamente ALT+F11.

4 - Come lanciare una macro.
Quanto segue si riferisce solo a macro copia/incollate nei moduli standard(vedi il punto 3.1). Macro inserite negli altri moduli di codice(fogli, ThisWorkbook/Questa_cartella_di_lavoro, moduli di classe) hanno utilizzi diversi e di solito sono forniti con istruzioni per l'uso. Rileggete sempre il punto 1 se avete dubbi in proposito. Vediamo come lanciare/eseguire la nostra macro inserita in un modulo standard una volta tornati in Excel.

  • 4.1 - ALT+F8 (premo assieme i due tasti)
  • 4.2 - Viene visualizzata la finestra Macro
  • 4.3 - Seleziono la macro
  • 4.4 - Pulsante: Esegui

5 - Assegnare un tasto di scelta rapida alle macro.
Nel caso voglia assegnare un tasto di scelta rapida alle mie macro(cioè premere ad esempio CTRL+a per eseguire la macro), questa è la procedura:

  • 5.1 - ALT+F8 (premo assieme i due tasti)
  • 5.2 - Viene visualizzata la finestra Macro
  • 5.3 - Seleziono la macro
  • 5.4 - Pulsante: Opzioni
  • 5.5 - Inserisco la lettera per il tasto di scelta rapida(ad esempio: a)
  • 5.6 - Ok
  • 5.7 - Nel caso le macro siano più di una ripeto i passi da 5.3 a 5.6
  • 5.8 - Quando ho finito chiudo la finestra Macro

Adesso premendo la combinazione di tasti CTRL+lettera_scelta lancerò la mia macro.

6 - Come salvare i file con le macro

Nelle versioni di Excel fino alla 2003 compresa, non occorre fare nulla di particolare. Dalla versione 2007 in poi, salvare il file con estensione xlsm, xls o xlsb. La versione di default xlsx NON supporta le macro e al momento del salvataggio se si tenta di salvare il file come xlsx compare una MsgBox (una finestra di alert) che vi ricorda come questa estensione NON supporta le macro. Ignorandola e salvando, tutti i moduli con le macro verranno eliminati. Quindi attenzione! La stessa cosa vale per i modelli di Excel: l'estensione xltx NON supporta le macro; se volete salvare un modello di Excel con la possibilità di utilizzare le macro, il formato è xltm.

7 - Consentire l'utilizzo delle macro.

Le macro sono disabilitate di default.

Per abilitare le macro in Excel 2003 (e versioni precedenti)

  • 7.1 - Posizionarsi in Excel lato celle
  • 7.2 - Strumenti
  • 7.3 - Macro 
  • 7.4 - Protezione...

Il mio consiglio è di utilizzare il livello Medio e decidere se utilizzare o meno le macro quando richiesto (all'apertura del file) nel caso sia di provenienza di terzi (le vostre saranno eseguite senza nessuna richiesta). E' solo un consiglio, leggere bene le scelte possibili e decidete conoscendo il contesto nel quale aprite il file.

Per abilitare le macro in Excel 2007

  • 7.5 - Pulsante Office (quello rotondo in alto a sx)
  • 7.6 - Opzioni di Excel (in basso)
  • 7.7 - Centro di protezione (a sx)
  • 7.8 - Impostazioni Centro protezione... (pulsante a dx)
  • 7.9 - Impostazioni macro (a sx)

In questo caso consiglio di settare: Disattiva tutte le macro con notifica.

Per abilitare le macro in Excel 2010/2013

  • 7.10 - Scheda File
  • 7.11 - Opzioni (a sx)
  • 7.12 - Centro di protezione (a sx)
  • 7.13 - Impostazioni Centro protezione... (pulsante a dx)
  • 7.14 - Impostazioni macro (a sx)

La schermata e il consiglio sono uguali a quelli per Excel 2007

Riferimenti.

Articolo Wiki che spiega l' ABC della programmazione ad oggetti nel Visual Basic di Excel:

Articolo Wiki che illustra gli errori di base da evitare quando si utilizza il Visual Basic di Excel:

Commenti.

Sono graditi i tuoi commenti a questo articolo Wiki e, se lo ritieni interessante, per favore spunta la voce : E' stato utile all'inizio della pagina.

Grazie.

NOTA. Excel non dispone nativamente di procedure assolutamente sicure per impedire la visualizzazione e la modifica del codice vb e/o per la protezione dei fogli. E’ una cosa da tenere sempre presente quando si distribuiscono file con contenuti ritenuti delicati. Ricordate anche che è possibile lanciare il file di Excel senza che vengano eseguite le macro.


Risorse.


 Avvio Pulito di Windows
(courtesy of Microsoft MVP Franco Leuzzi)


Computer infettato da malware (courtesy of Microsoft MVP Vincenzo Di Russo)



 

Informazioni articolo forum


Ultimo aggiornamento gennaio 16, 2019 Visualizzazioni 65.097 Si applica a:
Grazie, molto utile.

ho letto questo tuo articolo perché mi interessa apprendere un po  di nozioni generali di VBA.   nella prima figura al punto 3. illustri cosa appare quando si preme il tasto del VBA.  Anche a me all'inizio appariva così ma dopo aver smanettato un po non riesco a ristabilire questa visualizzazione (mi appaiono finestre intere e mai quelle due a sinistra come nella tua figura : progetto VBA project  e  foglio1 Workshop...)

come posso ristabilire la visualizzazione iniziale ?

grazie

Maxcro utilissima ma nello spacchettamento si perde la formattazione del file sorgente: come si può fare per conservarla?

Grazie

Piero