If you want to ask for a password we can make our own Save and SaveAs routines. Try this code (The required password is "abc", change as needed). You can then run the DisableIt macro on the workbook open/activate events and EnableIt macro on the before close / deactivate events.
Option Explicit
Sub DisableIt()
Dim CmdBar As CommandBar
Dim CmdCtl As CommandBarControl
For Each CmdBar In CommandBars
Set CmdCtl = CmdBar.FindControl(ID:=3, recursive:=True)
If Not CmdCtl Is Nothing Then CmdCtl.OnAction = "MySave"
Next CmdBar
For Each CmdBar In CommandBars
Set CmdCtl = CmdBar.FindControl(ID:=748, recursive:=True)
If Not CmdCtl Is Nothing Then CmdCtl.OnAction = "MySaveAs"
Next CmdBar
Application.OnKey "^s", ""
Set CmdBar = Nothing
Set CmdCtl = Nothing
End Sub
Sub EnableIt()
Dim CmdBar As CommandBar
Dim CmdCtl As CommandBarControl
For Each CmdBar In CommandBars
Set CmdCtl = CmdBar.FindControl(ID:=3, recursive:=True)
If Not CmdCtl Is Nothing Then CmdCtl.OnAction = ""
Next CmdBar
For Each CmdBar In CommandBars
Set CmdCtl = CmdBar.FindControl(ID:=748, recursive:=True)
If Not CmdCtl Is Nothing Then CmdCtl.OnAction = ""
Next CmdBar
Application.OnKey "^s"
Set CmdBar = Nothing
Set CmdCtl = Nothing
End Sub
Sub MySave()
Dim Prompt As String
Dim Title As String
Dim Password As String
Prompt = "What is the password?"
Title = "Authorized Save Only"
Password = InputBox(Prompt, Title)
If Password = "abc" Then
ThisWorkbook.Save
Else
MsgBox "Incorect Password", vbCritical
End If
End Sub
Sub MySaveAs()
Dim Prompt As String
Dim Title As String
Dim Password As String
Prompt = "What is the password?"
Title = "Authorized Save Only"
Password = InputBox(Prompt, Title)
If Password = "abc" Then
Application.Dialogs(xlDialogSaveAs).Show
Else
MsgBox "Incorect Password", vbCritical
End If
End Sub