Ak chcete použiť akékoľvek makro v Exceli, vaši používatelia musia makrá povoliť. To znamená, že musia dať Excelu povolenie na spúšťanie makier v ich prostredí. Ak chcete povoliť makrá, používatelia kliknú na tlačidlo Povoliť obsah v bezpečnostnom upozornení, ktoré sa zobrazí nad riadkom vzorcov.
Pointa je, že môžete písať všetky fantastické makrá na svete, ale nikdy sa nespustia, pokiaľ vaši používatelia makrá nepovolia. To vyvoláva otázku; Môžete prinútiť používateľov, aby povolili makrá? Odpoveď je áno – s trochou triku.
Myšlienka je pomerne jednoduchá. Vytvoríte hárok s názvom povedzme ŠTART. Tento hárok obsahuje iba jednoduché upozornenie, že makrá musia byť povolené. Potom skryjete všetky hárky v zošite okrem hárku ŠTART. Nakoniec napíšete jednoduché makro, ktoré po otvorení zošita odkryje všetky hárky.
V tomto bode, keď je zošit otvorený, Excel požiada používateľa, aby povolil makrá. Používatelia budú nútení tak urobiť, pretože všetko, čo uvidia, je váš úvodný hárok. Ostatné listy budú skryté!
Aby táto technika fungovala, potrebujete dve makrá: Jedno makro skryje všetky okrem hárka ŠTART, keď sa zošit zatvorí, a ďalšie makro, ktoré odkryje všetky okrem hárka ŠTART, keď sa zošit otvorí.
Najprv sa riaďte akciami, ktoré je potrebné vykonať po zatvorení zošita. :
Aktivujte Editor jazyka Visual Basic stlačením ALT+F11 na klávesnici
V okne Projekt nájdite názov projektu/zošita a kliknutím na znamienko plus vedľa neho zobrazte všetky hárky.
Kliknite na Tento zošit.
V rozbaľovacom poli Udalosť vyberte udalosť BeforeClose.
Zadajte alebo prilepte nasledujúci kód:
Súkromný podriadený zošit_pred zatvorením (zrušiť ako boolovský)
'Krok 1: Deklarujte svoje premenné
Dim ws As Worksheet
Krok 2: Odkryte úvodný hárok
Sheets("START").Visible = xlSheetVisible
'Krok 3: Začnite prechádzať všetky pracovné hárky
Pre každé ws In ThisWorkbook.Worksheets
'Krok 4: Skontrolujte názov každého pracovného hárka
Ak ws.Name <> "ŠTART" Potom
„Krok 5: Skryte hárok
ws.Visible = xlVeryHidden
Koniec Ak
Krok 6: Prejdite na ďalší pracovný hárok
Ďalšie ws
„Krok 7: Uložte zošit
ActiveWorkbook.Save
End Sub
V kroku 1 deklarujete objekt s názvom ws na vytvorenie pamäťového kontajnera pre každý pracovný hárok, cez ktorý budete prechádzať.
V kroku 2 sa ubezpečíte, že hárok ŠTART je viditeľný.
V kroku 3 spustíte cyklovanie a oznámite Excelu, že chcete vyhodnotiť všetky pracovné hárky v tomto zošite.
V kroku 4 jednoducho porovnáte názov ŠTART s hárkom, ktorý je momentálne v slučke. Tento krok zabezpečí, že nasledujúce akcie sa použijú na všetky hárky okrem hárka ŠTART.
Ak sa názvy hárkov líšia, v kroku 5 hárok skryjete pomocou vlastnosti xlVeryHidden. Táto vlastnosť nielenže skryje hárok, ale tiež zabráni používateľovi, aby ho manuálne odkryl pomocou používateľského rozhrania.
Prejdete späť a získate ďalší hárok v kroku 6.
V kroku 7, po vyhodnotení všetkých hárkov, makro uloží zošit a skončí.
Teraz musíte napísať makro na spracovanie všetkých akcií, ktoré sa musia vykonať pri otvorení zošita:
Aktivujte Editor jazyka Visual Basic stlačením ALT+F11.
V okne Projekt nájdite názov projektu/zošita a kliknutím na znamienko plus vedľa neho zobrazte všetky hárky.
Kliknite na Tento zošit.
V rozbaľovacom poli Udalosť vyberte možnosť Otvoriť udalosť.
Zadajte alebo prilepte nasledujúci kód:
Private Sub Workbook_Open()
'Krok 1: Deklarujte svoje premenné
Dim ws As Worksheet
'Krok 2: Začnite prechádzať všetky pracovné hárky
Pre každé ws In ThisWorkbook.Worksheets
'Krok 3: Zobrazte všetky pracovné hárky
ws.Visible = xlSheetVisible
„Krok 4: Prejdite na ďalší pracovný hárok
Ďalšie ws
'Krok 5: Skryte úvodný hárok
Sheets("START").Viditeľné = xlVeryHidden
End Sub
V kroku 1 deklarujete objekt s názvom ws na vytvorenie pamäťového kontajnera pre každý pracovný hárok, cez ktorý prechádzate.
V kroku 2 spustíte cyklovanie a oznámite Excelu, že chcete vyhodnotiť všetky pracovné hárky v tomto zošite.
V kroku 3 odkryjete hárok, ktorý je momentálne v slučke. Tento krok efektívne odkryje všetky pracovné hárky, pretože každý hárok je viditeľný.
Prejdete späť a získate ďalší hárok v kroku 4.
Keď sú všetky hárky viditeľné, krok 5 skryje hárok ŠTART. Opäť použijete vlastnosť xlVeryHidden, takže používateľ nebude môcť manuálne odkryť hárok pomocou používateľského rozhrania.
Po implementácii oboch makier budete mať zošit, ktorý bude fungovať iba vtedy, ak používateľ povolí makrá!