Noen ganger må du sende Excel-arbeidsboken ut i verden med spesifikke regneark beskyttet. Hvis du oppdager at du hele tiden beskytter og opphever beskyttelsen av ark før du distribuerer arbeidsbøkene dine, kan makroen her hjelpe deg.
Hvordan makroen fungerer
Koden utløses av arbeidsbokens BeforeClose-hendelse. Når du prøver å lukke arbeidsboken, utløses denne hendelsen og kjører koden innenfor. Makroen beskytter automatisk det angitte arket med det gitte passordet, og lagrer deretter arbeidsboken:
Privat underarbeidsbok_BeforeClose(Avbryt som boolsk)
'Trinn 1: Beskytt arket med et passord
Sheets("Sheet1"). Beskytt passord:="RED"
'Trinn 2: Lagre arbeidsboken
ActiveWorkbook.Save
End Sub
I trinn 1 spesifiserer du eksplisitt hvilket ark som skal beskyttes - Ark1, i dette tilfellet. Du oppgir også passordargumentet Password:=”RED”, som definerer passordet som trengs for å fjerne beskyttelsen.
Dette passordargumentet er valgfritt. Hvis du utelater det, vil arket fortsatt være beskyttet, men du trenger ikke et passord for å oppheve beskyttelsen.
Excel-passord skiller mellom store og små bokstaver, så du bør være oppmerksom på det nøyaktige passordet og store bokstaver du bruker.
Trinn 2 ber Excel lagre arbeidsboken. Hvis du ikke lagrer arbeidsboken, vil ikke arkbeskyttelsen du nettopp brukte, tre i kraft neste gang arbeidsboken åpnes.
Hvordan bruke makroen
For å implementere denne makroen, må du kopiere og lime den inn i Workbook_BeforeClose hendelseskodevinduet. Ved å plassere makroen her kan den kjøres hver gang du prøver å lukke arbeidsboken:
Aktiver Visual Basic Editor ved å trykke Alt+F11.
I prosjektvinduet finner du navnet på prosjektet/arbeidsboken og klikker på plusstegnet ved siden av for å se alle arkene.
Klikk på Denne arbeidsboken.
I rullegardinlisten Begivenhet velger du FørLukk-hendelsen.
Skriv eller lim inn koden i den nyopprettede modulen, endre arknavnet (om nødvendig) og passordet.
Skriv inn koden din i Workbook BeforeClose-hendelsen.
Merk at du kan beskytte flere ark ved å legge til tilleggssetninger før Activeworkbook.Save-setningen.