Ha bármilyen makrót szeretne használni az Excelben, a felhasználóknak engedélyezniük kell a makrókat. Vagyis engedélyt kell adniuk az Excelnek a makrók futtatásához a környezetükben. A makrók engedélyezéséhez a felhasználók a képletsor felett megjelenő biztonsági figyelmeztetésben a Tartalom engedélyezése gombra kattintanak.

A lényeg az, hogy a világ összes divatos makróját megírhatja, de azok soha nem fognak futni, hacsak a felhasználók nem engedélyezik a makrókat. Ez felveti a kérdést; kényszerítheti a felhasználókat a makrók engedélyezésére? A válasz igen – egy kis trükközéssel.
Az ötlet viszonylag egyszerű. Létrehozol egy lapot, mondjuk START néven. Ez a lap csak egy egyszerű figyelmeztetést tartalmaz, amely szerint engedélyezni kell a makrókat. Ezután elrejti az összes lapot a munkafüzetben, kivéve a START lapot. Végül írjon egy egyszerű makrót, amely felfedi az összes lapot a munkafüzet megnyitásakor.

Ezen a ponton, amikor a munkafüzet meg van nyitva, az Excel felkéri a felhasználót, hogy engedélyezze a makrókat. A felhasználók kénytelenek lesznek megtenni, mert csak a kezdőlapot fogják látni. A többi lap el lesz rejtve!
Ahhoz, hogy ez a technika működjön, két makróra van szüksége: az egyik makró a START lapot elrejti a munkafüzet bezárásakor, egy másik makró pedig a START lap kivételével a munkafüzet megnyitásakor.
Először is végezze el azokat a műveleteket, amelyeknek meg kell történniük a munkafüzet bezárásakor. :
A Visual Basic Editor aktiválásához nyomja meg az ALT+F11 billentyűkombinációt a billentyűzeten
A Projekt ablakban keresse meg a projekt/munkafüzet nevét, és kattintson a mellette lévő pluszjelre az összes lap megtekintéséhez.
Kattintson erre a munkafüzetre.
Az Esemény legördülő listában válassza ki a BeforeClose eseményt.

Írja be vagy illessze be a következő kódot:
Privát almunkafüzet_BeforeClose (Mégse logikai értékként)
'1. lépés: Deklarálja a változókat
Dim ws munkalapként
'2. lépés: A kezdőlap felfedése
Sheets("START").Visible = xlSheetVisible
'3. lépés: Kezdje el végigfutni az összes munkalapot
For Every Ws In ThisWorkbook.Worksheets
'4. lépés: Ellenőrizze az egyes munkalapok nevét
Ha ws.Name <> "START" Akkor
'5. lépés: Rejtsd el a lapot
ws.Visible = xlVeryHidden
Vége Ha
'6. lépés: Ugrás a következő munkalapra
Következő ws
'7. lépés: Mentse el a munkafüzetet
ActiveWorkbook.Save
Vége Sub
Az 1. lépésben deklarál egy ws nevű objektumot, hogy memóriatárolót hozzon létre minden egyes munkalaphoz, amelyen át fog menni.
A 2. lépésben győződjön meg arról, hogy a START lap látható.
A 3. lépésben elindítja a hurkot, és közli az Excellel, hogy ki szeretné értékelni a munkafüzet összes munkalapját.
A 4. lépésben egyszerűen hasonlítsa össze a START nevet az éppen hurkolt munkalappal. Ez a lépés biztosítja, hogy a következő műveletek a START munkalap kivételével minden munkalapra vonatkozzanak.
Ha a lapnevek eltérőek, az 5. lépésben elrejti a lapot az xlVeryHidden tulajdonság használatával. Ez a tulajdonság nemcsak elrejti a lapot, hanem megakadályozza, hogy a felhasználó manuálisan feltárja azt a felhasználói felület használatával.
A 6. lépésben vissza kell lépnie a következő laphoz.
A 7. lépésben az összes munkalap kiértékelése után a makró elmenti a munkafüzetet, és véget ér.
Most egy makrót kell írnia, hogy kezelje a munkafüzet megnyitásakor szükséges összes műveletet:
Aktiválja a Visual Basic Editort az ALT+F11 megnyomásával.
A Projekt ablakban keresse meg a projekt/munkafüzet nevét, és kattintson a mellette lévő pluszjelre az összes lap megtekintéséhez.
Kattintson erre a munkafüzetre.
Az Esemény legördülő listában válassza az Esemény megnyitása lehetőséget.

Írja be vagy illessze be a következő kódot:
Privát almunkafüzet_Open()
'1. lépés: Deklarálja a változókat
Dim ws munkalapként
'2. lépés: Kezdje el végigfutni az összes munkalapot
For Every Ws In ThisWorkbook.Worksheets
'3. lépés: Az összes munkalap felfedése
ws.Visible = xlSheetVisible
'4. lépés: Ugrás a következő munkalapra
Következő ws
'5. lépés: A kezdőlap elrejtése
Sheets("START").Látható = xlNagyonHidden
Vége Sub
Az 1. lépésben deklarál egy w nevű objektumot, hogy memóriatárolót hozzon létre minden egyes munkalaphoz, amelyen áthalad.
A 2. lépésben elindítja a hurkot, és közli az Excellel, hogy ki szeretné értékelni a munkafüzet összes munkalapját.
A 3. lépésben felfedi az éppen hurkolt munkalapot. Ez a lépés hatékonyan megjeleníti az összes munkalapot, miközben minden lap láthatóvá válik.
A 4. lépésben vissza kell lépnie a következő laphoz.
Miután az összes lap láthatóvá lett, az 5. lépés elrejti a START lapot. Ismét használja az xlVeryHidden tulajdonságot, hogy a felhasználó ne tudja manuálisan feloldani a lapot a felhasználói felület használatával.
Mindkét makró megvalósítása után lesz egy munkafüzete, amely csak akkor fog működni, ha a felhasználó engedélyezi a makrókat!