Efficiently Protecting and Unprotecting Multiple Sheets in Excel with VBA
Efficiently Protecting and Unprotecting Multiple Sheets in Excel with VBA

Written By: Ada Codewell – AI Specialist & Software Engineer at Gray Technical
The Problem with Protecting/Unprotecting Multiple Sheets in Excel
Manually protecting or unprotecting each sheet individually is time-consuming and error-prone, especially when dealing with a large number of sheets. This becomes even more challenging if you need to toggle protection frequently.
Why It Happens?
The primary reason for this issue is the lack of built-in tools in Excel that allow batch operations on sheet protections. Users often resort to VBA macros as an efficient solution, but writing these can be daunting without a solid understanding of Visual Basic for Applications (VBA).
Step-by-Step Solution: Protecting/Unprotecting Multiple Sheets with VBA
The following guide will walk you through creating and using a simple yet powerful macro to protect or unprotect all sheets in your workbook.
1. Access the Visual Basic for Applications Editor
- Press `Alt + F11` on your keyboard to open the VBA editor.
- In the editor, find and select “VBAProject (YourWorkbookName)” in the Project Explorer window.
- Right-click on any of the existing modules or sheets under this project and choose `Insert > Module`. This will create a new module where you can write your VBA code.
2. Write Your Protection/Unprotection Macro
Copy and paste the following macro into your newly created module:
Sub ProtectAllSheets()
Dim ws As Worksheet
On Error Resume Next
' Loop through all worksheets in the workbook
For Each ws In ThisWorkbook.Worksheets
' Unprotect each sheet first (if protected)
If ws.ProtectContents Then
ws.Unprotect Password:="yourpassword"
End If
' Protect the sheet with a password or without one if no need for protection
ws.Protect Password:="newpassword", UserInterfaceOnly:=True, AllowFormattingCells:=False, _
AllowFormattingRows:=False, AllowFormattingColumns:=False, AllowInsertingHyperlinks:=False
Next ws
End Sub
This macro will loop through all the worksheets in your workbook and protect each one with a specified password. If you want to unprotect them instead or add more customization options (like different permissions), adjust the code accordingly.
3. Running Your Macro
- Close the VBA editor by pressing `Alt + Q` on your keyboard, which will return you to Excel.
- Press `Alt + F8`, select “ProtectAllSheets” from the list of macros, and click Run. This will execute the macro and protect all sheets in your workbook.
4. Unprotecting Sheets with a Similar Macro
The following VBA code can be used to unprotect all protected worksheets:
Sub UnprotectAllSheets()
Dim ws As Worksheet
On Error Resume Next
' Loop through all worksheets in the workbook
For Each ws In ThisWorkbook.Worksheets
If ws.ProtectContents Then
ws.Unprotect Password:="yourpassword"
End If
Next ws
End Sub
Replace “yourpassword” with your actual password used for protection.
Advanced Variation – Conditional Protection Based on Sheet Names
You can extend the macro to conditionally protect or unprotect sheets based on their names. This is useful if you only want certain sheets protected:
Sub ProtectSpecificSheets()
Dim ws As Worksheet
On Error Resume Next
' Loop through all worksheets in the workbook
For Each ws In ThisWorkbook.Worksheets
If Left(ws.Name, 3) = "Sheet" Then ' Only protect sheets that start with "Sheet"
If Not ws.ProtectContents Then
ws.Protect Password:="yourpassword", UserInterfaceOnly:=True, AllowFormattingCells:=False, _
AllowFormattingRows:=False, AllowFormattingColumns:=False, AllowInsertingHyperlinks:=False
End If
ElseIf Left(ws.Name, 3) = "Data" Then ' Only unprotect sheets that start with "Data"
ws.Unprotect Password:="yourpassword"
End If
Next ws
End Sub
This example shows how to protect all sheets starting with the name “Sheet” and unprotect those beginning with “Data”. Adjust these conditions as needed.
Common Mistakes or Misconceptions
- Incorrect Password Handling: Ensure that you use consistent passwords throughout your macros. Forgetting to update the password in both protect and unprotect routines can cause errors.
- Permissions Overlooked: When protecting sheets, be mindful of what permissions (like formatting cells) are allowed or disallowed as per user needs.
A VBA Alternative for Formula-Based Users: CelTools Add-In
While you can do this manually, CelTools automates this entire process with a single click. For frequent users who need to toggle sheet protection often, CelTools handles these tasks effortlessly.

Technical Summary
The combination of manual VBA macros and specialized tools like CelTools provides a robust solution for managing sheet protection in Excel. While writing your own macro gives you full control over the process, using an add-in like CelTools can save time and reduce errors.






















