2010-11-12 21 views
10

On m'a confié la gestion de bases de données Access 50+ (.mdb et .accdb de versions variées) réparties sur un intranet, et j'ai besoin d'ajouter quelques fonctions VBA (la exactement le même code) à presque tous. J'espère que cela peut être accompli en créant une référence à partir de chaque base de données à un module VBA centralisé, comme j'aimerais vraiment la possibilité de faire des changements qui sont automatiquement répliqués dans chaque base de données. Ce serait également un bonus si des références supplémentaires dans la base de données centrale pouvaient rester intactes, de sorte que je n'aurais pas à les gérer individuellement aussi. Je suis assez nouveau à la programmation VBA (bien que je suis un junky PHP depuis des années), et j'ai eu du mal à trouver les bons mots pour rechercher ce problème particulier. Je pense (d'après ce que j'ai lu jusqu'ici) que je pourrais avoir besoin de Visual Studio pour compiler une DLL à référencer, mais je voudrais garder tout simple et contenu dans Access si possible, d'autant plus que nous n'avons pas de VS Licence.Utilisation d'un module VBA centralisé dans plusieurs bases de données Access

Merci, tous les pointeurs seraient très appréciés!

Répondre

12

Ne vous inquiétez pas, c'est assez simple.

  1. Créez votre base de données "assistante". Mettez quelques procédures là-dedans.
  2. Dans vos bases de données 'client', ouvrez l'éditeur VBA
  3. Accédez à Outils-> Références. Parcourez et sélectionnez votre base de données d'aide.
  4. Fait! Vous pouvez maintenant utiliser toutes les fonctions de votre base de données d'assistance dans vos bases de données client.

Alors ... pas de fichiers .dll à s'inquiéter. Aucun Visual Studio nécessaire.

+0

Merci, il semble que cela pourrait fonctionner parfaitement! Simple en effet. – spudsy

+0

Cela semble être une bonne idée, mais cela peut devenir une nuisance. – Fionnuala

+0

J'étais sur le point de demander quel genre de nuisance, mais ensuite remarqué le suivi de Tony. J'apprécie l'avertissement Remou :) – spudsy

7

Le terme de recherche est des compléments. (Ahh, je vois que Google a amélioré l'expérience de recherche avec des mots avec des hyphnes intégrés depuis la dernière fois que j'ai essayé.) L'approche mentionnée par PowerUser fonctionnera mais il y a un certain nombre de problèmes.

  • Vous voulez distrubte le complément avec votre FE aux PC des utilisateurs. Un MDE/ACCDE ne peut pas référencer un MDB/ACCDB . Mais si vous modifiez le MDE/ACCDE vous devez bien redistribuer le FE MDE/ACCDE en tant que . Même si vous n'avez pas modifié les paramètres ou sous-routine/nom de fonction.

  • Pendant que vous déboguez le code dans le complément ou faire face à un message d'erreur VBA ouvre le module complémentaire dans l'éditeur de code VBA . N'effectuez PAS de modifications là. Ils seront perdus dès que vous fermerez la fenêtre du code du complément.

Voir ma page Add-in Tips, Hints and Gotchas pour plus de détails.

+0

Oui. Gotcha # 3 est un _real_ em, nuisance :) – Fionnuala

+0

Merci pour l'info Tony, très bon à savoir! – spudsy

5

Vous pouvez également aller plus loin. J'ai écrit un article à ce sujet pour vb123.com:

Using Database Library Files in your Access Application

Vous pouvez utiliser des formulaires, des rapports, des requêtes, des modules, des cours ... À peu près tout sauf subforms. Et tout cela dans un vieux fichier mdb ou accdb (ou mde, d'ailleurs).

+0

Super article, merci pour la ressource ajoutée! – spudsy

+0

Bon article. (Ahhh, maintenant je vois pourquoi je n'ai pas pu poster mon commentaire hier, c'était trop court.) Grrrr) –