Forcer vos clients à activer les macros Excel

Pour utiliser l'une macro dans Excel, les utilisateurs doivent activer les macros. Autrement dit, ils doivent donner la permission d'exécuter des macros Excel dans leur environnement. Pour activer les macros, les utilisateurs cliquent sur le bouton de contenu dans l'avertissement de sécurité qui apparaît au-dessus de la barre de formule Activer.

image0.jpg

La ligne de fond est que vous pouvez écrire toutes les macros de fantaisie dans le monde, mais ils ne seront jamais fonctionner à moins que vos utilisateurs activer les macros. Cela soulève la question- vous pouvez forcer les utilisateurs à activer les macros? La réponse est oui - avec un peu de ruse.

L'idée est relativement simple. Vous créez une feuille nommé, disons, début. Cette feuille contient seulement un simple avertissement indiquant que les macros doivent être activées. Vous vous cachez alors toutes les feuilles du classeur sauf pour cette feuille de départ. Enfin, vous écrivez une macro simple qui unhides toutes les feuilles lorsque le classeur est ouvert.

image1.jpg

À ce stade, lorsque le classeur est ouvert, Excel demandera à l'utilisateur d'activer les macros. Les utilisateurs seront obligés de le faire parce que tout ce qu'ils vont voir est votre feuille de départ. Les autres feuilles seront cachés!

Pour faire ce travail technique, vous avez besoin de deux macros: on cache macro tous, mais la feuille de démarrage lorsque le classeur se ferme et une autre macro unhides tous, mais la feuille de départ lorsque le classeur ouvre.

Tout d'abord, face aux actions qui doivent se produire lorsque le classeur se ferme. :

  1. Activer Visual Basic Editor en appuyant sur ALT + F11 de votre clavier

  2. Dans la fenêtre Projet, trouver votre projet / nom du classeur et cliquez sur le signe plus à côté de lui pour voir toutes les feuilles.

  3. Cliquez ThisWorkbook.

  4. Dans la liste déroulante de l'événement, sélectionnez l'événement BeforeClose.

    image2.jpg
  5. Tapez ou collez le code suivant:




Private Sub Workbook_BeforeClose (Cancel As Boolean) 'Étape 1: Déclarez vos ws variablesDim Comme Worksheet'Step 2: Démasquer les SheetSheets départ ("START") Visible = xlSheetVisible'Step 3:. Début boucle à travers tous worksheetsFor Chaque WS En ThisWorkbook.Worksheets «Étape 4: Vérifiez chaque feuille de calcul nameif ws.Name lt;> "START" Then'Step 5: Masquer l'sheetws.Visible = xlVeryHiddenEnd If'Step 6: boucle au prochain worksheetNext ws'Step 7: Enregistrer Sous workbookActiveWorkbook.SaveEnd

Dans l'étape 1, vous déclarez un objet appelé WS pour créer un conteneur de mémoire pour chaque feuille de calcul, vous fera une boucle à travers.

Dans l'étape 2, vous vous assurez que la feuille de départ est visible.

Dans l'étape 3, vous commencez le bouclage, disant Excel que vous souhaitez pour évaluer toutes les feuilles dans ce classeur.

Dans l'étape 4, vous comparez simplement le nom START pour la feuille qui est actuellement en boucle. Cette étape garantit que les actions qui viennent suivante sont appliqués à toutes les feuilles sauf la feuille de départ.

Si les noms de feuille sont différents, à l'étape 5, vous cachez la feuille en utilisant la propriété xlVeryHidden. Cette propriété non seulement cache la feuille, mais empêche également l'utilisateur de démasquage manuellement en utilisant l'interface utilisateur.

Vous boucle de retour pour obtenir la feuille suivante à l'étape 6.

À l'étape 7, après toutes les feuilles sont évalués, la macro enregistre le classeur et des extrémités.

Maintenant, vous devez écrire une macro pour gérer toutes les actions qui doivent se produire lorsque le classeur ouvre:

  1. Activer Visual Basic Editor en appuyant sur ALT + F11.

  2. Dans la fenêtre Projet, trouver votre projet / nom du classeur et cliquez sur le signe plus à côté de lui pour voir toutes les feuilles.

  3. Cliquez ThisWorkbook.

  4. Dans la liste déroulante de l'événement, sélectionnez l'événement Open.

    image3.jpg
  5. Tapez ou collez le code suivant:

Private Sub Workbook_Open () 'Étape 1: Déclarez vos ws variablesDim Comme Worksheet'Step 2: Lancer une boucle à travers tous worksheetsFor Chaque WS En ThisWorkbook.Worksheets'Step 3: Démasquer Tous Worksheetsws.Visible = xlSheetVisible'Step 4: Boucle à venir ws worksheetNext «Étape 5:. Hide Start SheetSheets (" START ") Visible = Sous xlVeryHiddenEnd

Dans l'étape 1, vous déclarez un objet appelé WS pour créer un conteneur de mémoire pour chaque feuille de calcul, on boucle.

Dans l'étape 2, vous commencez le bouclage, disant Excel que vous souhaitez pour évaluer toutes les feuilles dans ce classeur.

Dans l'étape 3, vous faire apparaître la page qui est actuellement en boucle. Cette étape unhides efficacement toutes les feuilles de calcul que chaque feuille est rendu visible.

Vous boucle de retour pour obtenir la feuille suivante à l'étape 4.

Après toutes les feuilles sont rendues visibles, Étape 5 cache la feuille de départ. Encore une fois, vous utilisez la propriété xlVeryHidden sorte que l'utilisateur ne sera pas en mesure de démasquer manuellement la feuille en utilisant l'interface utilisateur.

Après deux macros sont mises en œuvre, vous aurez un classeur qui ne fonctionnera que si l'utilisateur active macros!


» » » » Forcer vos clients à activer les macros Excel