Če želite uporabiti kateri koli makro v Excelu, morajo vaši uporabniki omogočiti makre. To pomeni, da morajo Excelu dati dovoljenje za izvajanje makrov v svojem okolju. Če želite omogočiti makre, uporabniki kliknejo gumb Omogoči vsebino v varnostnem opozorilu, ki se pojavi nad vrstico s formulo.
Bistvo je, da lahko napišete vse modne makre na svetu, vendar se ti nikoli ne bodo izvajali, razen če vaši uporabniki omogočijo makre. To postavlja vprašanje; ali lahko prisilite uporabnike, da omogočijo makre? Odgovor je pritrdilen – z malo zvijače.
Ideja je relativno preprosta. Ustvarite list z imenom, recimo START. Ta list vsebuje samo preprosto opozorilo, ki navaja, da morajo biti makri omogočeni. Nato skrijete vse liste v delovnem zvezku, razen tistega START lista. Končno napišete preprost makro, ki razkrije vse liste, ko odprete delovni zvezek.
Na tej točki, ko je delovni zvezek odprt, bo Excel od uporabnika zahteval, da omogoči makre. Uporabniki bodo morali to storiti, ker bodo videli le vaš začetni list. Druge liste bodo skrite!
Da bi ta tehnika delovala, potrebujete dva makra: en makro skrije vse razen lista START, ko se delovni zvezek zapre, in drugi makro, ki razkrije vse razen lista START, ko se delovni zvezek odpre.
Najprej se lotite dejanj, ki se morajo zgoditi, ko se delovni zvezek zapre. :
Aktivirajte urejevalnik Visual Basic s pritiskom na ALT+F11 na tipkovnici
V oknu Projekt poiščite ime svojega projekta/delovnega zvezka in kliknite znak plus poleg njega, da si ogledate vse liste.
Kliknite Ta delovni zvezek.
V spustnem polju Dogodek izberite dogodek Pred zapiranjem.
Vnesite ali prilepite naslednjo kodo:
Private Sub Workbook_BeforeClose(Prekliči kot Boolean)
1. korak: Deklarirajte svoje spremenljivke
Dim ws As Worksheet
2. korak: Odkrijte začetni list
Listi("START").Vidno = xlSheetVisible
3. korak: Začnite brskati po vseh delovnih listih
Za vsako ws In ThisWorkbook.Worksheets
4. korak: Preverite ime vsakega delovnega lista
Če ws.Name <> "START" Nato
5. korak: skrij list
ws.Vidno = xlVeryHidden
Konec Če
'Korak 6: Pojdite na naslednji delovni list
Naslednji ws
7. korak: Shranite delovni zvezek
ActiveWorkbook.Save
Končni sub
V 1. koraku deklarirate objekt z imenom ws, da ustvarite pomnilniško posodo za vsak delovni list, po katerem se boste vrteli.
V 2. koraku zagotovite, da je list START viden.
V 3. koraku začnete z zanko in poveste Excelu, da želite oceniti vse delovne liste v tem delovnem zvezku.
V 4. koraku preprosto primerjate ime START z listom, ki je trenutno v zanki. Ta korak zagotavlja, da se naslednja dejanja uporabijo za vse liste, razen za list START.
Če so imena listov različna, v 5. koraku skrijete list z lastnostjo xlVeryHidden. Ta lastnost ne samo skrije lista, ampak tudi preprečuje, da bi ga uporabnik ročno razkril z uporabo uporabniškega vmesnika.
Vrnete se nazaj, da dobite naslednji list v 6. koraku.
V 7. koraku, ko so vsi listi ovrednoteni, makro shrani delovni zvezek in se konča.
Zdaj morate napisati makro za obdelavo vseh dejanj, ki se morajo zgoditi, ko se delovni zvezek odpre:
Aktivirajte urejevalnik Visual Basic s pritiskom na ALT+F11.
V oknu Projekt poiščite ime svojega projekta/delovnega zvezka in kliknite znak plus poleg njega, da si ogledate vse liste.
Kliknite Ta delovni zvezek.
V spustnem polju Dogodek izberite dogodek Odpri.
Vnesite ali prilepite naslednjo kodo:
Zasebni delovni zvezek_Open()
1. korak: Deklarirajte svoje spremenljivke
Dim ws As Worksheet
2. korak: Začnite brskati po vseh delovnih listih
Za vsako ws In ThisWorkbook.Worksheets
3. korak: razkrij vse delovne liste
ws.Visible = xlSheetVisible
4. korak: Pojdite na naslednji delovni list
Naslednji ws
'5. korak: skrij začetni list
Listi("START").Vidno = xlVeryHidden
Končni sub
V 1. koraku deklarirate objekt, imenovan ws, da ustvarite pomnilniško posodo za vsak delovni list, po katerem se vrtite.
V 2. koraku začnete z zanko in Excelu poveste, da želite oceniti vse delovne liste v tem delovnem zvezku.
V 3. koraku razkrijete list, ki je trenutno v zanki. Ta korak dejansko razkrije vse delovne liste, saj je vsak list viden.
Vrnete se nazaj, da dobite naslednji list v 4. koraku.
Ko so vsi listi vidni, korak 5 skrije START list. Ponovno uporabite lastnost xlVeryHidden, tako da uporabnik ne bo mogel ročno razkriti lista z uporabo uporabniškega vmesnika.
Ko bosta oba makra implementirana, boste imeli delovni zvezek, ki bo deloval le, če uporabnik omogoči makre!