Novice - using macro to protect with password

E

E

I want to protect every sheet in a workbook with a password. I understand
this is tricky, so I will be satisfied if I can write a macro to password
protect every sheet, which will save me typing in the password twice for
every sheet.
I have used macros before by simply recording them, but have no idea how to
write the code myself. Please could someone give me some very simple
instructions how to write an appropriate macro, or edit one I can easily
record.

Thanks.
 
S

Sam Wilson

Hi,

Press Alt + F11 to show the VB Editor window. Find "Book1" or whatever your
workbbok is called, and right-click it to "Insert Module" - paste this into
the module:

Sub demo()

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Protect "blahblah"
Next ws

End Sub

changing "blahblah" to whatever password you want.

That's it.

Sam
 
E

E

Wow, that seems to be just the ticket! I will try fiddling with it to
customise. Many thanks!
 
J

Jeff

Step by step
1). From Excel -->Tools-->Macro-->Visual Basic Editor
2). From VBE -->View-->Project Explorer (if not already displayed)
3). Double Click "ThisWorkbook" Module
4). Paste the below

Option Explicit

' Change "Password" to a password of your choice
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Protect "Password", True, True
End Sub

Private Sub Workbook_Open()
Dim QueryUser As String

Const Password As String = "Password"

QueryUser = InputBox("Enter Password", Application.Name)

If QueryUser = Password Then
ThisWorkbook.Unprotect Password
Else
MsgBox "Sorry, No Workbook for you!", vbCritical, Application.Name
ThisWorkbook.Close SaveChanges:=False
End If

End Sub
 
E

E

Thanks Jeff, but I tried Sam's macro before seeing your message. Sam's seems
to do the trick, but what is the difference between yours? Yours seems much
longer.
 
S

Sam Wilson

You might want to add a second macro to unprotect all sheets:

Sub demo2()

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Unprotect "blahblah"
Next ws

End Sub

Sam
 
E

E

Good plan, thanks. I assume 'demo2' is the name of the macro, which I can
change, and then add in a shortcut in the Options menu? (I'm Office 2007.)
 
J

Jeff

Mine just protects the entire workbook, When opened it promts the user for a
password. If its right it unprotect the entire workbook, if not it notifies
the user then closes. Before the worbook closes it protects the workbook
again. Sams Loops through protecting\Unprotecting each sheet one at a time.
 
E

E

I see. I want users to be able to open the file and use the information, just
not edit it, so I think Sam's is more appropriate for me.
Thank you.
 
J

Jeff

Me too, No Worries.

E said:
I see. I want users to be able to open the file and use the information, just
not edit it, so I think Sam's is more appropriate for me.
Thank you.
 
L

Lucas B

Can you write the macro to ask for you to input the password so it isn't
embedded in the macro?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top