Written by Allen Wyatt (last updated May 29, 2024)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, and 2021
Excel allows you to protect and unprotect worksheets. The purpose, of course, is to allow others to use your workbook, but not to modify certain cells within each worksheet.
Since protection is done at a worksheet level, it can be major pain to step through each worksheet in a workbook and either protect or unprotect them. If you have 25 worksheets, you must activate each worksheet, do the protect or unprotect, and move on to the next one.
A less time-consuming method of protecting each worksheet in a workbook is to use a macro to do the actual work. The following macro will do the trick:
Sub ProtectAllSheets() Dim ws As Worksheet Dim sOrigSheet As String Dim sOrigCell As String Application.ScreenUpdating = False sOrigSheet = ActiveSheet.Name sOrigCell = ActiveCell.Address For Each ws In Worksheets ws.Select ws.Protect Password:="Password" Next ws Application.GoTo Reference:=Worksheets("" _ & sOrigSheet & "").Range("" & sOrigCell & "") Application.ScreenUpdating = True End Sub
The macro to unprotect all the worksheets is only slightly different:
Sub UnProtectAllSheets() Dim ws As Worksheet Dim sOrigSheet As String Dim sOrigCell As String Application.ScreenUpdating = False sOrigSheet = ActiveSheet.Name sOrigCell = ActiveCell.Address For Each ws In Worksheets ws.Select ws.Unprotect Password:="Password" Next ws Application.GoTo Reference:=Worksheets("" _ & sOrigSheet & "").Range("" & sOrigCell & "") Application.ScreenUpdating = True End Sub
While these macros will work just fine, there are a couple of caveats. First, you need to make sure that the Password variable in each macro is set to the proper password for your worksheets. (This assumes, of course, that all the worksheets use the same passwords.) The second caveat is that since the macro has to include the password, the overall security of your workbook may be compromised—anyone that can display the macros will know what the passwords are for your workbooks.
As a solution to this last problem, you could modify the macros so that they ask for a password to use in their work. The following would be the version of the macro that protects worksheets:
Sub ProtectAllSheetsPass() Dim ws As Worksheet Dim sOrigSheet As String Dim sOrigCell As String Dim sPWord As String Application.ScreenUpdating = False sOrigSheet = ActiveSheet.Name sOrigCell = ActiveCell.Address sPWord = InputBox("What password?", "Protect All") If sPWord > "" Then For Each ws In Worksheets ws.Select ws.Protect Password:=sPWord Next ws End If Application.GoTo Reference:=Worksheets("" _ & sOrigSheet & "").Range("" & sOrigCell & "") Application.ScreenUpdating = True End Sub
The macro displays an input box asking for the password. The same password is then used to protect every worksheet in the workbook. The same sort of change can be done to the macro that unprotects all the worksheets.
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (13075) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, and 2021. You can find a version of this tip for the older menu interface of Excel here: Unprotecting Groups of Worksheets.
Excel Smarts for Beginners! Featuring the friendly and trusted For Dummies style, this popular guide shows beginners how to get up and running with Excel while also helping more experienced users get comfortable with the newest features. Check out Excel 2013 For Dummies today!
Want to run a macro in Excel, but not sure if doing so will tie up your computer? Here's how macro processing really happens.
Discover MoreUsing macros to step through each cell in a selection is a common occurrence. What if that selected range is made up of ...
Discover MoreExcel allows you to define names that can refer either to ranges of cells or to constant information, such as formulas. ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2020-10-23 02:40:36
Alex B
@Nanika, I am a little confused on what you are trying to do if you (in terms of this tip) if you don't have a password protected sheet(s).
If you mean its protected but with a blank password / no password, then you can unprotect with this:-
Sub UnProtectAllSheets()
Application.ScreenUpdating = False
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.unprotect Password:=""
Next ws
Application.ScreenUpdating = True
End Sub
If you are saying you don't have the password then you need a password recovery tool
2020-10-22 12:53:46
Nanika
Hi,
This macro is helpful, but what if I don't have password protected sheets?
Thank you,
Nanika
2020-09-05 10:01:23
Alex B
On the premise that you want to avoid the using the select statement, just by removing the ws.select, you can shrink the code down to this.
Without the select you never moved off the original position, so you don't need to remember it and reset it.
Sub ProtectAllSheets()
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In Worksheets
ws.Protect Password:="Password"
Next ws
Application.ScreenUpdating = True
End Sub
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2025 Sharon Parq Associates, Inc.
Comments