/ / Comportement des macros VBA Excel non portables - excel-vba, excel-2010, vba, excel

Comportement des macros VBA Excel non portables - excel-vba, excel-2010, vba, excel

J'utilise Excel 2010 et j'ajoute une petite macro VBAsur une feuille de calcul. (Le but de la macro est de récupérer les données de la feuille active et de les exporter dans un fichier CSV, mais cela est tangentiel à la question.) La macro détermine le chemin de sortie du fichier à l’aide de ThisWorkbook.Path. J'ai également ajouté un bouton personnalisé à la barre d'outils Accès rapide pour activer la macro.

Après avoir mis en place un algorithme de travail dans monfeuille de calcul expérimentale (Test.xlsm, stocké dans un chemin), j’ai copié la feuille de calcul dans un autre chemin et je l’ai renommée _Database.xlsm. Ensuite, j'ai ouvert _Database.xlsm et exécuté la macro. À ma grande surprise, le fichier a été écrit dans le chemin d'origine, pas dans le nouveau. Et en regardant dans la barre d’outils de Windows, j’ai vu qu’Excel avait également ouvert le fichier original dans son chemin d’origine.

Après beaucoup de secousses avec des modifications de code,En vérifiant les propriétés et autres, j'ai finalement trouvé que je pouvais empêcher cela en ouvrant la feuille de calcul copiée, en supprimant le bouton de la barre d'outils Accès rapide, en l'ajoutant de nouveau, puis en enregistrant le fichier. Mes questions sont:

  1. Pourquoi la macro n'est-elle pas "portable indépendamment" avec la feuille de calcul? Pourquoi la copie conserve-t-elle ce type de lien avec la feuille d'origine?

  2. Est-il possible de créer ou de modifier la macro pour la rendre portable en ce sens?

Réponses:

1 pour la réponse № 1

Si vous voulez qu'une barre d’outils / bouton se déplace avec unfichier (c’est-à-dire pas toujours lié à la version originale), vous devez l’ajouter au fichier lui-même et non au QAT. Le QAT ne "connaît" que le fichier auquel vous avez associé le bouton.

Il peut être préférable d’ajouter la macro à votre classeur de macros personnelles et de l’opérer ensuite dans ActiveWorkbook.

Toutefois, si vous souhaitez le distribuer à d'autres utilisateurs, vous pouvez conserver la macro dans le classeur "base de données" et ajouter une partie de ruban personnalisée. Voir: http://www.rondebruin.nl/win/s2/win001.htm