Chcete-li použít jakékoli makro v aplikaci Excel, vaši uživatelé musí makra povolit. To znamená, že musí aplikaci Excel udělit oprávnění ke spouštění maker v jejich prostředí. Chcete-li povolit makra, uživatelé kliknou na tlačítko Povolit obsah v bezpečnostním varování, které se objeví nad řádkem vzorců.
Pointa je, že můžete napsat všechna luxusní makra na světě, ale nikdy se nespustí, pokud vaši uživatelé makra nepovolí. To vyvolává otázku; můžete donutit uživatele, aby povolili makra? Odpověď je ano – s trochou triku.
Myšlenka je poměrně jednoduchá. Vytvoříte list s názvem, řekněme, START. Tento list obsahuje pouze jednoduché upozornění, že makra musí být povolena. Potom skryjete všechny listy v sešitu kromě listu START. Nakonec napíšete jednoduché makro, které při otevření sešitu odkryje všechny listy.
V tomto okamžiku, když je sešit otevřen, Excel požádá uživatele, aby povolil makra. Uživatelé k tomu budou nuceni, protože uvidí pouze váš úvodní list. Ostatní listy budou skryty!
Aby tato technika fungovala, potřebujete dvě makra: Jedno makro skryje všechny kromě listu START při zavření sešitu a další makro, které při otevření sešitu zobrazí všechny kromě listu START.
Nejprve se vypořádejte s akcemi, které je třeba provést, když se sešit zavře. :
Aktivujte Editor jazyka Visual Basic stisknutím ALT+F11 na klávesnici
V okně Projekt najděte název projektu/sešitu a kliknutím na znaménko plus vedle něj zobrazte všechny listy.
Klepněte na ThisWorkbook.
V rozevíracím seznamu Událost vyberte událost BeforeClose.
Zadejte nebo vložte následující kód:
Private Sub Workbook_BeforeClose (Zrušit jako Boolean)
'Krok 1: Deklarujte své proměnné
Dim ws As Worksheet
'Krok 2: Odkryjte úvodní list
Sheets("START").Visible = xlSheetVisible
'Krok 3: Začněte procházet všechny pracovní listy
Pro každý ws In ThisWorkbook.Worksheets
'Krok 4: Zkontrolujte název každého listu
Pokud ws.Name <> "START" Potom
'Krok 5: Skryjte list
ws.Visible = xlVeryHidden
End If
'Krok 6: Vraťte se k dalšímu listu
Další ws
'Krok 7: Uložte sešit
Aktivní sešit.Uložit
End Sub
V kroku 1 deklarujete objekt s názvem ws, který vytvoří paměťový kontejner pro každý list, kterým budete procházet.
V kroku 2 se ujistěte, že je list START viditelný.
V kroku 3 spustíte opakování a sdělíte Excelu, že chcete vyhodnotit všechny listy v tomto sešitu.
V kroku 4 jednoduše porovnáte název START s listem, který je aktuálně ve smyčce. Tento krok zajistí, že akce, které následují, se použijí na všechny listy kromě listu START.
Pokud se názvy listů liší, v kroku 5 skryjete list pomocí vlastnosti xlVeryHidden. Tato vlastnost nejen skryje list, ale také zabrání uživateli jej ručně odkrýt pomocí uživatelského rozhraní.
V kroku 6 se vrátíte zpět a získáte další list.
V kroku 7, po vyhodnocení všech listů, makro uloží sešit a skončí.
Nyní musíte napsat makro, které zvládne všechny akce, které je třeba provést při otevření sešitu:
Aktivujte Editor jazyka stisknutím ALT+F11.
V okně Projekt najděte název projektu/sešitu a kliknutím na znaménko plus vedle něj zobrazte všechny listy.
Klepněte na ThisWorkbook.
V rozevíracím seznamu Událost vyberte Otevřít událost.
Zadejte nebo vložte následující kód:
Private Sub Workbook_Open()
'Krok 1: Deklarujte své proměnné
Dim ws As Worksheet
'Krok 2: Začněte procházet všechny pracovní listy
Pro každý ws In ThisWorkbook.Worksheets
'Krok 3: Odkryjte všechny listy
ws.Visible = xlSheetVisible
'Krok 4: Přejděte na další list
Další ws
'Krok 5: Skryjte úvodní list
Sheets("START").Visible = xlVeryHidden
End Sub
V kroku 1 deklarujete objekt s názvem ws k vytvoření paměťového kontejneru pro každý list, kterým procházíte.
V kroku 2 spustíte opakování a sdělíte Excelu, že chcete vyhodnotit všechny listy v tomto sešitu.
V kroku 3 zobrazíte list, který je aktuálně ve smyčce. Tento krok efektivně zobrazí všechny listy, protože každý list je viditelný.
V kroku 4 se vrátíte zpět a získáte další list.
Po zviditelnění všech listů krok 5 skryje list START. Opět použijete vlastnost xlVeryHidden, takže uživatel nebude moci ručně odkrýt list pomocí uživatelského rozhraní.
Po implementaci obou maker budete mít sešit, který bude fungovat pouze v případě, že uživatel povolí makra!