2012-03-13 6 views
10

Qual è il modo migliore per evitare la duplicazione del codice quando si lavora in VBA?Come riutilizzare il codice con VBA

Sono abituato alle lingue in cui posso semplicemente aggiungere una dichiarazione di importazione e accedere a tutte le proprietà e funzioni pubbliche di una classe, quindi posso semplicemente creare una classe di utilità con alcune funzioni comuni e avere accesso a tale in qualsiasi progetto Ho scelto di importarlo in Ogni volta che voglio aggiornare una di queste funzioni, è sufficiente una modifica per farlo funzionare su tutti i progetti.

C'è qualche buon modo per replicare questa funzionalità in VBA?

risposta

13

Ciò che segue si concentra su Excel ma sono sicuro che lo stesso si applicherebbe a qualsiasi prodotto Office.

Il modo semplice è quello di salvare il codice riusabile come un componente aggiuntivo (* .xla per Excel 2003, * .xlam per Excel 2007+). Quindi aggiungi l'addin a Excel e tutti i fogli di lavoro aperti avranno accesso alle funzioni personalizzate che hai nel tuo componente aggiuntivo. Se aggiungi un codice VBA specifico a un foglio di calcolo, puoi aggiungere un riferimento al tuo componente aggiuntivo e il tuo codice VBA avrà accesso a tutte le sottofunzioni, funzioni e classi pubbliche del tuo componente aggiuntivo.

Nella mia organizzazione, utilizziamo 3 componenti aggiuntivi fatti in casa - sono memorizzati in C: \ Programmi \ Nome_organizzazione. E tutti hanno accesso a loro. Quando viene effettuato un aggiornamento, abbiamo solo bisogno di copiare la nuova versione sul disco fisso di tutti e riavviare Excel e hanno la nuova versione.

I componenti aggiuntivi contengono funzioni di utilità come ad esempio le funzioni di:

  • leggere dati da/scrivere dati su fogli di calcolo/file/database.
  • dati usuali di manipolazione come la rimozione di duplicati da una lista
  • funzioni statistiche avanzate
  • ecc

alcuni inconvenienti:

  • Se si dispone di più istanze di Excel aperti, solo è possibile aggiornare l'addin, le altre istanze sono in modalità di sola lettura
  • Se Excel si arresta in modo anomalo, la modalità di ripristino automatico generalmente non salva il modifiche apportate sul componente aggiuntivo (TBC sulle versioni più recenti) - ci sono un paio di strumenti a salvataggio automatico regolarmente

Un'alternativa è quella di sviluppare XLL o librerie COM in VB o C# per esempio, ma questo è qualcosa che devo non provato

Se hai bisogno di una procedura più dettagliata, ci sono molti tutorial online.

+0

Perfetto. Sono rimasto bloccato per un po 'perché ho dimenticato di impostare un riferimento, ma una volta ho riletto il tuo post e ho fatto che tutto funzionasse correttamente. Grazie :) –

+0

Uno dei tuoi inconvenienti (aggiornamento) è risolto qui: http://www.excelguru.ca/content.php?152-Deploying-Add-ins-in-a-Network-Environment. Spero che questo aiuti chiunque a venire qui in futuro. –