Se hai creato un componente aggiuntivo per contenere le funzioni personalizzate di Excel, potresti aver scoperto che, sebbene le funzioni funzionino correttamente in un foglio di lavoro di Excel, non puoi utilizzarle nelle procedure VBA in altre cartelle di lavoro. È come se Visual Basic Editor non potesse _ vederli. Bene, questo perché non può! Questo articolo spiega come risolverlo ._ Prima di tutto, considera se questo è davvero ciò che vuoi fare.

I componenti aggiuntivi sono destinati principalmente per aggiungere funzionalità extra alle cartelle di lavoro. Quando carichi un componente aggiuntivo di Excel, la sua funzionalità diventa immediatamente disponibile per tutte le tue cartelle di lavoro. Se crei una procedura VBA che dipende da una funzione personalizzata contenuta in un’altra cartella di lavoro, quell’altra cartella di lavoro dovrebbe essere aperta ogni volta che desideri utilizzare la sua funzione. Lo stesso vale per una funzione personalizzata in un componente aggiuntivo. Se il componente aggiuntivo è caricato va bene, ma supponiamo che tu spedisca la tua cartella di lavoro a qualcun altro o la distribuisca al tuo gruppo di lavoro. Devi ricordarti di distribuire anche l’Add-In. Potrebbe essere più semplice includere una copia della funzione nel codice della cartella di lavoro in modo che le procedure abbiano accesso diretto ad essa (potrebbe essere necessario renderla una Funzione privata o modificarne il nome per evitare conflitti di denominazione).

Non sto dicendo di non farlo. Devi solo pensarci prima e se sei sicuro che l’add-in sarà disponibile, vai avanti. Ecco come …​

Quando sorge il problema?

Sto scrivendo una procedura per una delle mie cartelle di lavoro. Nella mia procedura voglio utilizzare la funzione RemoveSpaces che ho creato tempo fa e salvato nel mio componente aggiuntivo Martin’s Functions che è attualmente installato nella mia copia di Excel. Ma quando provo a eseguire la mia procedura ottengo un errore.

Il Visual Basic Editor si comporta come se la funzione non esistesse, ma so che esiste e posso vederlo se guardo il codice all’interno del mio componente aggiuntivo. In effetti, il codice funziona bene se lo eseguo dall’interno del mio componente aggiuntivo.

Ho bisogno del Visual Basic Editor per essere in grado di see le funzioni nel mio componente aggiuntivo dall’interno del modulo di codice di una cartella di lavoro different.

Assegna al tuo componente aggiuntivo un nome di progetto VBA Ogni cartella di lavoro ha un nome di progetto VBA. Si chiama VBAProject. Puoi cambiare quel nome se vuoi ma normalmente non mi preoccupo, perché normalmente non importa.

Ti sei mai chiesto perché tutte le cartelle di lavoro visualizzate nel riquadro Project Explorer dell’editor di visual basic si chiamano “VBAProject”? Se hai installato uno qualsiasi dei componenti aggiuntivi di Microsoft, vedrai che hanno un nome diverso. Gli sviluppatori Microsoft hanno assegnato al loro componente aggiuntivo Analysis ToolPak il nome del progetto VBA “funcres”.

La prima cosa da fare è assegnare al componente aggiuntivo un nome progetto VBA univoco.

Questo perché ci si riferirà ad esso con questo nome nel passaggio successivo e se ce ne sono più di uno con lo stesso nome, Visual Basic Editor non saprà quale usare.

Nel riquadro Project Explorer seleziona il nome del tuo componente aggiuntivo. Se non è già aperto, visualizza la Properties Window di Visual Basic Editor. Vedrai che c’è solo una proprietà, il Name. Digita un altro nome e premi Invio. Dovrai obbedire alle solite regole di denominazione per VBA (cioè nessun carattere illegale e nessuno spazio). Vedrai che il nome viene immediatamente applicato in Project Explorer.

Ora salva le modifiche al tuo componente aggiuntivo. Assicurati che il tuo componente aggiuntivo sia selezionato in Project Explorer e scegli File> Salva.

Impostare un riferimento al componente aggiuntivo In questo passaggio si indica alla cartella di lavoro in cui si desidera utilizzare le funzioni del componente aggiuntivo che il componente aggiuntivo esiste. A tale scopo, Impostare un riferimento al componente aggiuntivo. Potresti aver già incontrato questa tecnica se volevi scrivere codice Excel per comunicare con un altro programma come Outlook o Access.

Se è conveniente, riavvia Excel a questo punto. Questo perché il tuo componente aggiuntivo rinominato verrà ricaricato e l’elenco che stai per vedere verrà aggiornato. Se non è conveniente, non preoccuparti …​ leggi il prossimo paragrafo e decidi cosa vuoi fare.

Apri un modulo di codice nella cartella di lavoro in cui desideri utilizzare le funzioni del componente aggiuntivo, quindi vai su Strumenti> Riferimenti per aprire la finestra di dialogo Riferimenti dove vedrai un elenco di tutte le librerie e altri oggetti (come i componenti aggiuntivi) a cui puoi impostare un riferimento. Se hai riavviato Excel, questo elenco sarà stato aggiornato e sarai in grado di trovare il nome del progetto che hai assegnato al tuo componente aggiuntivo nell’ultimo passaggio. Metti un segno di spunta nella casella accanto al nome e fai clic sul pulsante OK.

Se non hai riavviato Excel, dovrai trovare il file del componente aggiuntivo facendo clic sul pulsante Sfoglia nella finestra di dialogo Riferimenti. Questo apre la finestra Aggiungi riferimento. Modificare la sezione Tipo di file: in _Microsoft Excel Files (.xls; .xla) _ quindi passare alla cartella in cui è archiviato il componente aggiuntivo.

Seleziona il tuo componente aggiuntivo e fai clic su Apri. Questo aggiunge il tuo componente aggiuntivo all’elenco in cui puoi selezionarlo e fare clic su OK.

NOTA: non è necessario eseguire entrambe queste procedure! Scegli uno o l’altro a seconda che tu abbia riavviato Excel o meno dopo aver modificato il nome del progetto VBA del componente aggiuntivo.

Ora sarai in grado di utilizzare le funzioni del componente aggiuntivo in qualsiasi modulo della cartella di lavoro in cui hai impostato il riferimento e saranno riconosciute dall’editor di Visual Basic …​

Se guardi Project Explorer vedrai che è stato applicato un riferimento alla cartella di lavoro …​

È importante ricordare che l’aggiunta di un riferimento si applica solo alla cartella di lavoro per la quale è stata eseguita questa procedura. Dovrai farlo per ogni diversa cartella di lavoro in cui desideri utilizzare le funzioni del tuo componente aggiuntivo.

Informazioni sulla distribuzione dei file Quando si aggiunge un riferimento a un componente aggiuntivo, questo collegamento al componente aggiuntivo è “cablato” nel file. Se sposti il ​​file su un altro computer o lo distribuisci ai tuoi colleghi, la cartella di lavoro si aspetterà di trovare lo stesso componente aggiuntivo, nello stesso posto, sui loro computer. Inoltre, se il componente aggiuntivo viene spostato o eliminato dal computer, la cartella di lavoro non sarà in grado di trovarlo e il codice non funzionerà.

Alcune persone sostengono che il file e il componente aggiuntivo associato dovrebbero sempre trovarsi nella stessa cartella per evitare i problemi che ciò potrebbe causare. Ovviamente puoi impostare di nuovo il riferimento per risolvere il problema.

Tieni in considerazione questi fattori e non avrai problemi.