Per utilitzar qualsevol macro a Excel, els usuaris han d'activar les macros. És a dir, han de donar permís a Excel per executar macros al seu entorn. Per habilitar les macros, els usuaris fan clic al botó Habilita el contingut a l'avís de seguretat que apareix a sobre de la barra de fórmules.
La conclusió és que podeu escriure totes les macros elegants del món, però mai no s'executaran tret que els vostres usuaris habilitin les macros. Això planteja la pregunta; podeu obligar els usuaris a habilitar macros? La resposta és sí, amb una mica d'engany.
La idea és relativament senzilla. Creeu un full anomenat, per exemple, COMENÇA. Aquest full només conté un avís senzill que indica que s'han d'habilitar les macros. A continuació, amagueu tots els fulls del quadern de treball, excepte el full INICI. Finalment, escriviu una macro senzilla que mostra tots els fulls quan s'obre el llibre de treball.
En aquest punt, quan s'obri el llibre de treball, Excel demanarà a l'usuari que habiliti les macros. Els usuaris es veuran obligats a fer-ho perquè només veuran el vostre full d'inici. Els altres llençols s'amagaran!
Perquè aquesta tècnica funcioni, necessiteu dues macros: una macro amaga tot excepte el full START quan es tanca el llibre de treball i una altra macro que mostra tot menys el full START quan s'obre el quadern de treball.
En primer lloc, abordeu les accions que han de passar quan es tanqui el llibre de treball. :
Activeu Visual Basic Editor prement ALT+F11 al vostre teclat
A la finestra Projecte, cerqueu el nom del vostre projecte/llibre de treball i feu clic al signe més que hi ha al costat per veure tots els fulls.
Feu clic a Aquest llibre de treball.
Al quadre desplegable Esdeveniment, seleccioneu l'esdeveniment Abans de tancar.
Escriviu o enganxeu el codi següent:
Private Sub Workbook_BeforeClose (Cancel·la com a booleà)
"Pas 1: declara les teves variables
Dim ws com a full de treball
"Pas 2: mostra el full inicial
Fulls("START").Visible = xlSheetVisible
"Pas 3: comenceu a repassar tots els fulls de treball
Per a cada ws En aquest llibre de treball.Fulls de treball
"Pas 4: comproveu el nom de cada full de treball
Si ws.Name <> "START" Aleshores
"Pas 5: amaga el full
ws.Visible = xlVeryHidden
Acaba si
"Pas 6: aneu al següent full de treball
Següent ws
"Pas 7: deseu el llibre de treball
ActiveWorkbook.Desa
End Sub
Al pas 1, declareu un objecte anomenat ws per crear un contenidor de memòria per a cada full de treball que recorreu.
Al pas 2, us assegureu que el full INICI és visible.
Al pas 3, inicieu el bucle, dient a Excel que voleu avaluar tots els fulls de treball d'aquest llibre.
Al pas 4, simplement compareu el nom START amb el full que s'està reproduint en bucle. Aquest pas garanteix que les accions següents s'apliquen a tots els fulls excepte al full INICI.
Si els noms dels fulls són diferents, al pas 5 amagueu el full mitjançant la propietat xlVeryHidden. Aquesta propietat no només amaga el full, sinó que també evita que l'usuari el mostri manualment mitjançant la interfície d'usuari.
Feu un llaç enrere per obtenir el següent full al pas 6.
Al pas 7, després d'avaluar tots els fulls, la macro desa el llibre de treball i finalitza.
Ara, heu d'escriure una macro per gestionar totes les accions que han de passar quan s'obre el llibre de treball:
Activeu Visual Basic Editor prement ALT+F11.
A la finestra Projecte, cerqueu el nom del vostre projecte/llibre de treball i feu clic al signe més que hi ha al costat per veure tots els fulls.
Feu clic a Aquest llibre de treball.
Al quadre desplegable Esdeveniment, seleccioneu l'esdeveniment Obre.
Escriviu o enganxeu el codi següent:
Private Sub Workbook_Open()
"Pas 1: declara les teves variables
Dim ws com a full de treball
"Pas 2: comenceu a repassar tots els fulls de treball
Per a cada ws En aquest llibre de treball.Fulls de treball
'Pas 3: Mostra tots els fulls de treball
ws.Visible = xlSheetVisible
"Pas 4: aneu al següent full de treball
Següent ws
"Pas 5: amaga el full d'inici
Fulls("START").Visible = xlMoltAmagat
End Sub
Al pas 1, declareu un objecte anomenat ws per crear un contenidor de memòria per a cada full de treball que passeu.
Al pas 2, inicieu el bucle, dient a Excel que voleu avaluar tots els fulls de treball d'aquest llibre.
Al pas 3, mostreu el full que s'està reproduint en bucle. Aquest pas mostra efectivament tots els fulls de treball a mesura que cada full es fa visible.
Torneu enrere per obtenir el següent full al pas 4.
Després que tots els fulls es facin visibles, el pas 5 amaga el full INICI. De nou, utilitzeu la propietat xlVeryHidden perquè l'usuari no pugui mostrar manualment el full mitjançant la interfície d'usuari.
Un cop implementades ambdues macros, tindreu un llibre de treball que només funcionarà si l'usuari activa les macros.