Requirement: I have an excel file with multiple tabs which is being updated monthly by many users. I want to create a password for each tab so that each user can only view and edit their own tab.
Limitation: Protect Sheet Function in Excel is notoriously weak.
Solution: Use VBA code to set up password on each tab.
Protecting Multiple Tabs with Different Passwords
Let's say I have three teams which need to report their daily sales in one excel spreadsheet. The three teams are named Team Apple, Team Watermelon and Team Grapes. First, let's create a new tab for each one of them.
1. Add three new tabs and rename each according to the team name.
2. Create a column for 'Name', 'Item', 'Sales' and 'Date' for each team.
3. Click Visual Basic from the 'Developer' tab.
4. From Sheet 2 to Sheet 4, copy and paste the VBA code below:
VBA Code:
Dim strPassword As String
'On Error Resume Next
Me.Unprotect Password:="Apple"
Me.Columns.Hidden = True
Me.Protect Password:="Apple"
strPassword = InputBox("Enter password to access DATA sheet")
If strPassword = "" Then
ActiveSheet.Visible = False
Worksheets("Sheet1").Select
Exit Sub
ElseIf strPassword <> "Apple" Then
MsgBox "Password Incorrect "
ActiveSheet.Visible = False
Worksheets("Sheet1").Select
Exit Sub
Else
Me.Unprotect Password:="Apple"
Me.Columns.Hidden = False
End If
Range("A1").Select
On Error GoTo 0
End Sub
Private Sub Worksheet_Deactivate()
'On Error Resume Next
Me.Unprotect Password:="Apple"
Me.Columns.Hidden = True
Me.Protect Password:="Apple"
On Error GoTo 0
End Sub
5. Change the password for each sheet as highlighted in yellow text background above. In this example, the name of the team per tab is used as the password. Once you complete changing the password for each sheet, close the Visual Basic Application.
6. When you try to click on any protected sheet, it will now ask for a password. Enter the correct password assigned per tab to view and edit.
7. When you enter an incorrect password, it will display an error and the excel tab will be automatically hidden. To open it, you need to right-click on any open tab and unhide the sheet.
Easily bypassed by disabling macros
ReplyDelete