Copier le module VBA - Conseils Excel

Table des matières

Michelle écrit:

Nous avons développé une application Excel qui génère un classeur Excel unique à distribuer à chacun des 54 courtiers. Je dois inclure plusieurs macros VBA dans chacun des 54 classeurs Excel qui sont distribués aux courtiers. Comment puis-je copier un module VBA du classeur Excel d'origine vers chaque nouveau classeur Excel?

C'est une excellente question, Michelle. Il est facile d'utiliser la commande Sheets (). Copier pour copier une feuille de calcul dans un nouveau classeur, mais il n'est pas aussi facile de copier un module dans le nouveau classeur. La solution consiste à exporter le module une fois, puis à l'importer dans chacun de vos 54 classeurs de courtier à mesure qu'ils sont terminés. Voici une partie de votre code avec la solution.

' Delete any old stray copies of the module1 On Error Resume Next Kill ("C:MrXL1.bas") On Error GoTo 0 ' Export Module 1 ActiveWorkbook.VBProject.VBComponents("module1").Export ("c:MrXL1.bas") For x = 1 to 54 ThisBroker = Sheets("BrokerList").range("A" & x).value '… customization of plan omited for brevity Sheets(Array("Menu", "Plan")).Copy NBName = ActiveWorkbook.Name ' new book name ' Import Module 1 to this new book Application.VBE.ActiveVBProject.VBComponents.Import ("c:MrXL1.bas") ActiveWorkbook.SaveAs Filename:=ThisBroker ActiveWorkbook.Close Next x Kill ("C:MrXl1.bas")

Les commandes VBE.ActiveProject.VBComponents.Export et VBE.ActiveProject.VBComponents… Les commandes d'importation se chargent de copier les macros dans les nouveaux livres.

Dans Excel 2002 et plus récent, vous devez autoriser explicitement une macro à ajouter du code à un classeur. Allez dans Outils, Macro, Sécurité. Cliquez sur le 2ème onglet: Éditeurs de confiance. En bas à gauche, choisissez Trust Access to Visual Basic Project. Dans Excel 2007, accédez à Icône Office, Options Excel, Centre de gestion de la confidentialité, Paramètres du Centre de gestion de la confidentialité, Paramètres des macros et choisissez Approuver l'accès au modèle d'objet du projet VBA.

Mise en garde

Les commandes pour exporter et importer des modules, ainsi que les commandes pour taper de nouvelles macros dans un classeur existant sont collectivement appelées Extensibilité Visual Basic ou VBE. Si votre classeur utilise des commandes VBE, il y a de fortes chances que le classeur soit signalé par des antivirus. C'est un faux positif. Le nom du prétendu virus a presque toujours «heuristique» dans le nom. Cela signifie que l'analyseur voit des appels DLL qui semblent suspects, mais qui ne correspondent pas nécessairement à des virus connus. Vous pouvez généralement écrire au fabricant du logiciel antivirus et demander que votre classeur Excel soit inscrit sur la liste blanche après avoir expliqué ce que vous faites et pourquoi c'est une bonne chose à faire.

Articles intéressants...