Я согласен с @Richard Morgan ... то, что вы делаете, должно работать, поэтому может потребоваться больше информации.
Microsoft предлагает несколько вариантов защиты ваших таблиц Excel 2003 .
Вот немного больше информации ...
Из файлов справки (метод защиты):
expression.Protect(Password, Structure, Windows)
выражение Обязательное. Выражение, которое возвращает объект Workbook.
Пароль Необязательный вариант. Строка, которая задает чувствительный к регистру пароль для рабочего листа или рабочей книги. Если этот аргумент пропущен, вы можете снять защиту листа или рабочей книги без использования пароля. В противном случае необходимо указать пароль для снятия защиты с листа или рабочей книги. Если вы забудете пароль, вы не сможете снять защиту листа или рабочей книги. Рекомендуется хранить список ваших паролей и соответствующих им имен документов в надежном месте.
Необязательный вариант структуры. Истинно для защиты структуры рабочей книги (относительное положение листов). Значением по умолчанию является False.
Необязательный вариант Windows. True для защиты окон рабочей книги. Если этот аргумент пропущен, окна не защищены.
ActiveWorkbook.Protect Password:="password", Structure:=True, Windows:=True
Если вы хотите работать на уровне листа, я использовал нечто подобное несколько лет назад, когда мне нужно было защитить / снять защиту:
Sub ProtectSheet()
ActiveSheet.Protect "password", True, True
End Sub
Sub UnProtectSheet()
ActiveSheet.Unprotect "password"
End Sub
Sub protectAll()
Dim myCount
Dim i
myCount = Application.Sheets.Count
Sheets(1).Select
For i = 1 To myCount
ActiveSheet.Protect "password", true, true
If i = myCount Then
End
End If
ActiveSheet.Next.Select
Next i
End Sub