Excel ger dig möjlighet att skydda dina Excel -arbetsböcker från ändringar. Denna handledning visar dig hur du skyddar eller avskyddar arbetsbokstrukturen med VBA.
VBA -arbetsbokskydd
VBA Workbook Protection låter dig låsa arbetsbokens struktur. När en arbetsbok är skyddad kommer användare inte att kunna lägga till, ta bort, dölja / ta bort eller skydda / avskydda kalkylblad. Om du bygger en modell vill du förmodligen aktivera arbetsbokskydd för att förhindra att användare (eller du!) Av misstag tar bort kalkylblad.
UnProtect Workbook VBA
För att avskydda en arbetsbok använder du bara följande kodrad:
1 | Arbetsböcker ("Bok1"). Oskyddad |
Obs! Den här koden fungerar bara om arbetsboken var skyddad utan ett lösenord. Om det var skyddat med ett lösenord måste du också ange lösenordet för att avskydda det:
Skydda arbetsboken med lösenord
Denna kodrad avskyddar en arbetsbok som har skyddats med ett lösenord:
1 | Workbooks ("Book1"). Unprotect Password: = "password" |
eller så kan du skicka lösenord: =
1 | Arbetsböcker ("Bok1"). Skydda "lösenord" |
Avskydda denna arbetsbok
Denna kod avskyddar ThisWorkbook (ThisWorkbook är arbetsboken där den löpande koden lagras. Den kommer aldrig att ändras).
1 | ThisWorkbook.Onprotect |
eller avskydda ThisWorkbook med ett lösenord:
1 | ThisWorkbook.Unprotect "lösenord" |
Avskydda ActiveWorkbook
Denna kod avbryter ActiveWorbook.
1 | ActiveWorkbook.Onskydda |
eller avskydda ActiveWorkbook med ett lösenord:
1 | ActiveWorkbook.Unprotect "lösenord" |
Ta bort alla öppna arbetsböcker
Denna kod avskyddar alla öppna arbetsböcker:
12345678 | Sub UnprotectAllOpenWorkbooks ()Dim wb Som arbetsbokFör varje wb i arbetsböckerwb.OskyddadNästa wbAvsluta Sub |
UnProtect Workbook - Utan att veta lösenord
Om du behöver avskydda en arbetsbok utan att veta lösenordet finns det flera tillägg som kan hjälpa dig. Jag skulle rekommendera Ribbon Commander.
Ta bort alla blad i arbetsboken
När du har avskyddat en arbetsbok kanske du också vill ta bort alla ark i arbetsboken. Här är en procedur som avskyddar alla ark:
12345678 | Sub UnProtectWorkbookAndAllSheets ()Dim ws Som arbetsbladActiveWorkbook.OnskyddaFör varje ws i kalkylbladws.OskyddadNästaAvsluta Sub |
Skydda arbetsboken
Du kan skydda arbetsbokstrukturer på samma sätt som du avskyddar.
Skydda arbetsboken Inget lösenord
Denna kodrad skyddar en arbetsbok (inget lösenord)
1 | Arbetsböcker ("Bok1"). Skydda |
Obs! Jag använder ofta arbetsbokskydd utan lösenord, helt enkelt för att förhindra olycklig ändringar i arbetsböcker.
Skydda arbetsboken med lösenord
Denna kod skyddar arbetsbokstrukturen (med ett lösenord)
1 | Arbetsböcker ("Bok1"). Skydda "lösenord" |
eller:
1 | Arbetsböcker ("Bok1"). Skydda lösenord: = "lösenord" |
Lösenordsskydda Excel -fil
Istället för arbetsbokskydd kanske du vill lösenordsskydda en hel Excel-fil. För att göra det med VBA, spara som arbetsboken med ett lösenord:
1 | Workbooks ("Book1"). SaveAs "password" |
Skydda / avskydda arbetsboksexempel
Ta bort alla kalkylblad i Protected Workbook
Detta förfarande avskyddar en arbetsbok, döljer alla kalkylblad och skyddar arbetsboken igen
12345678910 | Sub UnprotectWB_Unhide_All_Sheets ()Dim ws Som arbetsbladActiveWorkbook.OnskyddaFör varje ws i kalkylbladws.Visible = xlSheetVisibleNästaActiveWorkbook.ProtectAvsluta Sub |
Skydda arbetsboken och alla blad
Detta förfarande skyddar alla kalkylblad i en arbetsbok och skyddar sedan arbetsboken:
1234567891011 | Sub ProtectWB_Protect_All_Sheets ()Dim ws Som arbetsbladActiveWorkbook.OnskyddaFör varje ws i kalkylbladws.ProtectNästaActiveWorkbook.ProtectAvsluta Sub |
Du kan också lägga till lösenordsskydd:
1234567891011 | Sub ProtectWB_Protect_All_Sheets_Pswrd ()Dim ws Som arbetsbladActiveWorkbook.Unprotect "lösenord"För varje ws i kalkylbladws.Protect "lösenord"NästaActiveWorkbook.Protect "lösenord"Avsluta Sub |