2010-11-12 6 views
10

Sono stato messo a capo di oltre 50 database di Access (.mdb e .accdb di versioni diverse) sparsi su una intranet, e ho bisogno di aggiungere alcune funzioni VBA (il esatto stesso codice) per quasi tutti. Spero che possa essere realizzato creando un riferimento da ciascun database a un modulo VBA centralizzato, poiché mi piacerebbe davvero la possibilità di apportare modifiche lungo la strada che vengono automaticamente replicate in ogni database. Sarebbe anche un vantaggio se eventuali riferimenti aggiuntivi nel db centrale potrebbero essere mantenuti intatti quindi non dovrei gestirli individualmente.Utilizzo di un modulo VBA centralizzato in più database di Access

Sono abbastanza nuovo alla programmazione VBA (anche se sono stato un junky PHP per anni) e ho avuto difficoltà a trovare le parole giuste per cercare questo particolare problema. Penso (da quello che ho letto finora) che potrei aver bisogno di Visual Studio per compilare una DLL come riferimento, ma mi piacerebbe mantenere tutto semplice e contenuto all'interno di Access, se possibile, specialmente perché non abbiamo VS licenza.

Grazie, qualsiasi suggerimento sarebbe molto apprezzato!

risposta

12

Non preoccuparti, è piuttosto semplice.

  1. Crea il tuo database "di supporto". Metti alcune procedure lì.
  2. Nei database "client", aprire l'editor VBA
  3. Passare a Strumenti-> Riferimenti. Sfoglia e seleziona il tuo database di supporto.
  4. Fatto! Ora puoi utilizzare tutte le funzioni nel tuo database helper in tutti i database dei tuoi clienti.

Quindi ... nessun file .dll di cui preoccuparsi. Non è necessario Visual Studio.

+0

Grazie, potrebbe funzionare perfettamente! Semplice davvero. – spudsy

+0

Sembra una grande idea, ma può diventare una seccatura. – Fionnuala

+0

Stavo per chiedere che tipo di fastidio, ma poi ho notato il seguito di Tony. Apprezzo l'avviso Remou :) – spudsy

7

Il termine di ricerca è aggiuntivo. (Ah, vedo che Google ha migliorato l'esperienza di ricerca con le parole con hyphnes incorporato dall'ultima volta che ho provato.) L'approccio menzionato da PowerUser funzionerà, ma ci sono una serie di problemi.

  • Si vuole distrubte il componente aggiuntivo con il vostro FE ai PC degli utenti.

  • Un MDE/ACCDE non può fare riferimento a un MDB/ACCDB . Ma se si modifica il componente aggiuntivo MDE/ACCDE , è necessario ridistribuire il FE MDE/ACCDE come . Anche se non hai modificato i parametri oi nomi di subroutine/funzione .

  • durante il debug del codice in il componente aggiuntivo o trattare con un messaggio di errore VBA si aprirà il componente aggiuntivo VBA editor di codice. NON apportare modifiche lì. Verranno persi non appena si chiude la finestra del codice aggiuntivo.

Vedere la mia pagina Add-in Tips, Hints and Gotchas per ulteriori dettagli.

+0

Sì. Gotcha # 3 è un _real_ em, fastidio :) – Fionnuala

+0

Grazie per le informazioni Tony, molto bello sapere! – spudsy

5

Si potrebbe anche fare un ulteriore passo avanti. Ho scritto un articolo su questo per vb123.com:

Using Database Library Files in your Access Application

È possibile utilizzare moduli, report, query, moduli, classi ... Praticamente tutto tranne sottomoduli. E tutto in un semplice vecchio file mdb o accdb (o mde, se è per questo).

+0

Ottimo articolo, grazie per la risorsa aggiunta! – spudsy

+0

Buon articolo. (Ahhh, ora capisco perché non ho potuto postare il mio commento ieri. Era troppo corto. Grrrr) –