Please Note: This article is written for users of the following Microsoft Excel versions: 2007, 2010, 2013, 2016, 2019, and Excel in Microsoft 365. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Unprotecting Groups of Worksheets.
Written by Allen Wyatt (last updated May 29, 2024)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, and Excel in Microsoft 365
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 Excel in Microsoft 365. You can find a version of this tip for the older menu interface of Excel here: Unprotecting Groups of Worksheets.
Comprehensive VBA Guide Visual Basic for Applications (VBA) is the language used for writing macros in all Office programs. This complete guide shows both professionals and novices how to master VBA in order to customize the entire Office suite for their needs. Check out Mastering VBA for Office 2010 today!
It can be frustrating when macros don't run as you expect. When it occurs, however, tracking down the cause can be even ...
Discover MoreIf your macro processes information on a number of worksheets, chances are good that you need your macro to figure out ...
Discover MoreNeed to know how to generate a full month name based on a date? It's easy to do, as discussed in this tip.
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 © 2024 Sharon Parq Associates, Inc.
Comments