Come salvare e utilizzare le proprie macro VBA in tutte le cartelle di lavoro di Excel?
In molte situazioni potrebbe essere necessario utilizzare ripetutamente la stessa macro VBA in diverse cartelle di lavoro Excel per compiti come l’automazione di calcoli ripetitivi, la formattazione dei dati o funzioni personalizzate, ad esempio la conversione di numeri in parole. Un problema comune è che, per impostazione predefinita, le macro vengono salvate solo nella cartella di lavoro in cui sono create, rendendo difficoltoso accedervi o riutilizzarle facilmente in nuovi documenti. Tuttavia, Excel offre diversi metodi flessibili per rendere una macro VBA disponibile a livello globale, eliminando la necessità di ricopiare il codice ogni volta che si apre una nuova cartella di lavoro. Questo tutorial fornisce istruzioni complete per vari approcci volti a garantire che le macro VBA siano sempre a portata di mano in tutte le cartelle di lavoro, migliorando produttività e flusso di lavoro.

Salva e utilizza il codice VBA in tutte le cartelle di lavoro
Metodo della cartella di lavoro personale per le macro
Ad esempio, immagina di voler convertire numeri nelle corrispondenti parole in inglese utilizzando un codice VBA personalizzato e di desiderare che questa funzionalità sia sempre disponibile, indipendentemente dalla cartella di lavoro aperta. Con l’approccio giusto, puoi salvare i moduli VBA in modo che siano prontamente riutilizzabili ogni volta che ti servono in Excel. Questo è particolarmente vantaggioso per funzioni personalizzate o automazioni che vuoi avere sempre a portata di mano, senza dover duplicare il codice in più file.
Per farlo, puoi creare un pacchetto del codice VBA come componente aggiuntivo personalizzato di Excel. Una volta abilitato in Excel, questo componente rende la funzionalità personalizzata disponibile come una funzione globale.
Seguire questi passaggi:
1. Premere Alt + F11 in Excel per aprire la finestra «Microsoft Visual Basic, Applications».
2. Nell'editor VBA, fare clic su Inserisci > Modulo e incollare la seguente macro nella finestra del modulo appena creato.
Codice VBA: Converti Converti in parole
Function NumberstoWords(ByVal MyNumber)
'Update by ExtendofficeDim xStr As StringDim xFNum As IntegerDim xStrPointDim xStrNumberDim xPoint As StringDim xNumber As StringDim xP() As VariantDim xDPDim xCnt As IntegerDim xResult, xT As StringDim xLen As IntegerOn Error Resume NextxP = Array("", "Thousand ", "Million ", "Billion ", "Trillion ", " ", " ", " ", " ")
xNumber = Trim(Str(MyNumber))
xDP = InStr(xNumber, ".")
xPoint = ""
xStrNumber = ""
If xDP >0 ThenxPoint = " point "
xStr = Mid(xNumber, xDP +1)
xStrPoint = Left(xStr, Len(xNumber) - xDP)
For xFNum =1 To Len(xStrPoint)
xStr = Mid(xStrPoint, xFNum,1)
xPoint = xPoint & GetDigits(xStr) & " "
Next xFNumxNumber = Trim(Left(xNumber, xDP -1))
End IfxCnt =0xResult = ""
xT = ""
xLen =0xLen = Int(Len(Str(xNumber)) /3)
If (Len(Str(xNumber)) Mod3) =0 Then xLen = xLen -1Do While xNumber <> ""
If xLen = xCnt ThenxT = GetHundredsDigits(Right(xNumber,3), False)
ElseIf xCnt =0 ThenxT = GetHundredsDigits(Right(xNumber,3), True)
ElsexT = GetHundredsDigits(Right(xNumber,3), False)
End IfEnd IfIf xT <> "" ThenxResult = xT & xP(xCnt) & xResultEnd IfIf Len(xNumber) >3 ThenxNumber = Left(xNumber, Len(xNumber) -3)
ElsexNumber = ""
End IfxCnt = xCnt +1LoopxResult = xResult & xPointNumberstoWords = xResultEnd FunctionFunction GetHundredsDigits(xHDgt, xB As Boolean)
Dim xRStr As StringDim xStrNum As StringDim xStr As StringDim xI As IntegerDim xBB As BooleanxStrNum = xHDgtxRStr = ""
On Error Resume NextxBB = TrueIf Val(xStrNum) =0 Then Exit FunctionxStrNum = Right("000" & xStrNum,3)
xStr = Mid(xStrNum,1,1)
If xStr <> "0" ThenxRStr = GetDigits(Mid(xStrNum,1,1)) & "Hundred "
ElseIf xB ThenxRStr = "and "
xBB = FalseElsexRStr = " "
xBB = FalseEnd IfEnd IfIf Mid(xStrNum,2,2) <> "00" ThenxRStr = xRStr & GetTenDigits(Mid(xStrNum,2,2), xBB)
End IfGetHundredsDigits = xRStrEnd FunctionFunction GetTenDigits(xTDgt, xB As Boolean)
Dim xStr As StringDim xI As IntegerDim xArr_1() As VariantDim xArr_2() As VariantDim xT As BooleanxArr_1 = Array("Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
xArr_2 = Array("", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")
xStr = ""
xT = TrueOn Error Resume NextIf Val(Left(xTDgt,1)) =1 ThenxI = Val(Right(xTDgt,1))
If xB Then xStr = "and "
xStr = xStr & xArr_1(xI)
ElsexI = Val(Left(xTDgt,1))
If Val(Left(xTDgt,1)) >1 ThenIf xB Then xStr = "and "
xStr = xStr & xArr_2(Val(Left(xTDgt,1)))
xT = FalseEnd IfIf xStr = "" ThenIf xB ThenxStr = "and "
End IfEnd IfIf Right(xTDgt,1) <> "0" ThenxStr = xStr & GetDigits(Right(xTDgt,1))
End IfEnd IfGetTenDigits = xStrEnd FunctionFunction GetDigits(xDgt)
Dim xStr As StringDim xArr_1() As VariantxArr_1 = Array("Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ")
xStr = ""
On Error Resume NextxStr = xArr_1(Val(xDgt))
GetDigits = xStrEnd Function 3. Ora fai clic sull'icona «Salva» nell'angolo in alto a sinistra della finestra oppure premi semplicemente Ctrl + S per aprire la finestra di dialogo «Salva con nome».
4. Nella finestra «Salva con nome», inserisci il nome desiderato nel campo «Nome file». Nel menu a discesa «Specifica formato di salvataggio», assicurati di selezionare Componente aggiuntivo di Excel (*.xlam).
5. Fare clic sul pulsante «Salva» per salvare la cartella di lavoro come componente aggiuntivo di Excel, creando così un componente riutilizzabile che può essere attivato in qualsiasi momento e con qualsiasi cartella di lavoro.
6. Una volta salvato, tornate a Excel e chiudete la cartella di lavoro appena convertita in componente aggiuntivo.
7. Apri una cartella di lavoro nuova o esistente in cui desideri utilizzare la macro. Inserisci la formula personalizzata nella cella appropriata (ad esempio, in B2):
=NumberstoWords(A2) 
8. Passa alla scheda Sviluppo e fai clic sul pulsante Componenti aggiuntivi di Excel nel gruppo Componenti aggiuntivi.
9. Nella finestra di dialogo Componenti aggiuntivi visualizzata, seleziona Sfoglia.
10. Individua e seleziona il file del componente aggiuntivo salvato in precedenza, quindi fai clic su OK.
11. Il proprio componente aggiuntivo personalizzato, ad esempio «Componente aggiuntivo per convertire numeri in parole», dovrebbe ora apparire nell'elenco dei componenti aggiuntivi. Assicurati che sia selezionato e fai clic su OK per abilitarlo.
12. Ora inserisci nuovamente la funzione personalizzata nella cella di destinazione (ad esempio, B2) e premi Invio. Dovresti vedere le parole corrette in inglese corrispondenti al numero.
=NumberstoWords(A2) 13. Per applicare rapidamente la formula di conversione a più numeri, trascina la maniglia di riempimento automatico della cella verso il basso e copia la funzione nelle altre celle.

Suggerimenti e note:
- Salvare la macro come componente aggiuntivo (Add-in) ti permette di utilizzare le stesse funzioni personalizzate, codice o automazioni in tutte le cartelle di lavoro, risparmiando tempo e garantendo coerenza.
- Se Excel viene chiuso o il componente aggiuntivo viene successivamente disabilitato, le relative funzioni potrebbero visualizzare temporaneamente «#NOME?» finché il componente non verrà nuovamente caricato. Per evitare confusione, assicurati che il componente aggiuntivo sia sempre abilitato nella gestione dei componenti aggiuntivi ogni volta che ti serve.
- Alcuni utenti potrebbero non vedere la scheda Sviluppo visualizzata per impostazione predefinita. Per attivarla, fai clic con il pulsante destro del mouse sulla Barra multifunzione, seleziona «Personalizza la Barra multifunzione» e assicurati che l’opzione «Sviluppo» sia spuntata.
- È buona norma archiviare i componenti aggiuntivi in una cartella permanente per evitare riferimenti mancanti qualora i file vengano spostati o rinominati.
Se si preferisce eseguire il codice manualmente, ciò è possibile e talvolta utile durante il debug o per utilizzi occasionali:
- È possibile assegnare una macro alla barra di accesso rapido per eseguirla con un solo clic in qualsiasi cartella di lavoro aperta. Per farlo, fai clic con il pulsante destro del mouse sulla barra di accesso rapido, seleziona «Personalizza barra di accesso rapido» e aggiungi la tua macro.

- È anche possibile premere Alt + F11 per aprire l'editor VBA, selezionare manualmente la macro desiderata e premere F5 per eseguire il codice all'occorrenza.
Vantaggi: Questa soluzione permette di creare e condividere macro avanzate e riutilizzabili, che funzionano correttamente purché il componente aggiuntivo sia abilitato.
Svantaggi: Gli utenti devono ricordarsi di caricare il componente aggiuntivo e, in caso di condivisione delle cartelle di lavoro, devono condividere anche il file del componente aggiuntivo e i dettagli delle funzioni. Inoltre, i componenti aggiuntivi non sono compatibili con Excel Online.
Un altro metodo estremamente pratico per avere sempre a disposizione le macro preferite o più utilizzate in ogni sessione di Excel, indipendentemente dalla cartella di lavoro aperta, è utilizzare la cartella di lavoro personale per le macro (PERSONAL.XLSB). Si tratta di un file Excel speciale e nascosto che viene caricato automaticamente all’avvio di Excel, rendendo accessibili da qualsiasi cartella di lavoro aperta tutte le macro in esso contenute.
Scenari applicabili: Ideale per automazioni personali, script di formattazione ricorrenti o funzioni di utilità che non devono essere condivisi come componenti aggiuntivi ufficiali di Excel. Le macro salvate in PERSONAL.XLSB sono sempre disponibili sul proprio computer, indipendentemente dal file aperto.
Vantaggi: Le macro sono disponibili a livello globale per il profilo locale di Excel e non richiedono l'installazione di componenti aggiuntivi o file esterni.
Svantaggi: Le macro memorizzate in questo modo possono essere utilizzate soltanto sul computer e con l'account in cui è presente il file PERSONAL.XLSB. Per condividerle con altri utenti, è necessario esportare e importare manualmente i moduli.
- Per utilizzare questo metodo, è innanzitutto necessario registrare o creare una macro e assicurarsi che venga salvata nella cartella personale delle macro.
Seguire questi passaggi:
- Apri Excel. Nella scheda Visualizza, fai clic su Macro e poi su Registra macro.
- Nella finestra di dialogo, in «Salva macro in», seleziona Cartella di lavoro personale per le macro. Completa la registrazione (puoi interromperla immediatamente se non ti serve).
- Premere Alt + F11 per accedere all'editor VBA, dove apparirà un progetto denominato PERSONAL.XLSB. Qui puoi inserire un nuovo modulo o incollare il codice della macro desiderata.
- Salva le modifiche. Excel crea e gestisce automaticamente la cartella di lavoro PERSONAL.XLSB nella sua cartella di avvio.
- Le macro contenute in PERSONAL.XLSB possono essere eseguite tramite la finestra di dialogo Macro (Alt + F8), assegnate alla Barra multifunzione o a pulsanti della barra degli strumenti, oppure richiamate da VBA.
Risoluzione dei problemi e manutenzione: Se le macro presenti in PERSONAL.XLSB non sono disponibili, assicurati che Excel non sia avviato in modalità provvisoria (Safe Mode) e che le impostazioni di sicurezza delle macro non siano impostate su «Disabilita tutte le macro». Inoltre, il file PERSONAL.XLSB è nascosto per impostazione predefinita; se lo chiudi accidentalmente senza salvare o lo elimini, potrebbe essere necessario registrare nuovamente una macro per rigenerarlo.
C:\Users\[YourUserName]\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSBUn codice VBA per elencare tutti i componenti aggiuntivi in Excel
In Excel puoi aggiungere vari componenti aggiuntivi per gestire i tuoi dati in modo ancora più efficace. Come probabilmente già sai, puoi visualizzarli dalla finestra Opzioni — ma sapevi che esiste un modo per elencarli direttamente su un foglio di lavoro? In questo tutorial ti forniamo un pratico codice VBA per elencare tutti i componenti aggiuntivi installati in Excel.
Come eseguire una macro VBA all'apertura o alla chiusura di una cartella di lavoro?
In questo articolo ti spieghiamo come eseguire automaticamente il codice VBA ogni volta che apri o chiudi una cartella di lavoro.
Come proteggere/bloccare il codice VBA in Excel?
Proprio come puoi usare una password per proteggere cartelle di lavoro e fogli di lavoro, puoi impostarne una anche per proteggere le macro in Excel.
Come impostare un ritardo temporale dopo l'esecuzione di una macro VBA in Excel?
In alcuni casi potrebbe essere necessario introdurre un ritardo prima che una macro VBA in Excel produca il suo effetto. Ad esempio, al clic su una macro specifica, questa potrebbe attivarsi solo dopo 10 secondi. Questo articolo ti mostra come ottenere facilmente questo risultato.
Migliori Strumenti per la Produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un’efficienza mai vista prima.Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e Risparmia tempo.Clicca qui per ottenere la funzionalità di cui hai più bisogno...
Office Tab Porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede all’interno della stessa finestra, invece che in finestre separate.
- Aumenta la tua produttività del 50 % e risparmia centinaia di clic del mouse ogni giorno!
Tutti i componenti aggiuntivi di Kutools in un unico programma di installazione.
Kutools for Office è la suite che include componenti aggiuntivi per Excel, Word, Outlook e PowerPoint, oltre a Office Tab Pro: la soluzione ideale per i team che lavorano su diverse app di Office.
- Suite completa— componenti aggiuntivi per Excel, Word, Outlook e PowerPoint + Office Tab Pro
- Un unico programma di installazione, una sola licenza— configurazione in pochi minuti (pronto per MSI)
- Funziona meglio insieme— produttività ottimizzata tra le app di Office
- Prova gratuita di 30 giorni con tutte le funzionalità— nessuna registrazione, nessuna carta di credito
- Miglior rapporto qualità-prezzo— risparmia rispetto all’acquisto dei singoli componenti aggiuntivi
