Точно так же вводим пароль (с повторением), ок, сохраняем.
Но все эти способы не более чем игрушки, и вскрываются совершенно не сложно при наличии некоторых минимальных навыков и особенно при сохранении в *.xlsm (файл с поддержкой макросов). Сохраняйте в *.xlsb (двоичный код), если хотите хоть немного защитить свою работу.
Впрочем защита листа, даже без задания пароля, очень полезная вещь позволяющая ограничить вероятность порчи документа. Например если оставить без защиты (доступными для редактирования) только ячейки с исходными данными, то сам расчёт шаловливыми ручками испорчен не будет. Довольно часто пользуюсь...
Каким же образом можно ещё затруднить использование вашей работы, кроме как не давать её?
Ну для начала надо определиться что защищаем. Если это просто текст, и вы его кому то отдали, то забудьте о защите - он общедоступен. Но документ Excel это, прежде всего расчёты. Своей масштабируемостью они и ценны - при изменении исходных данных пересчёт произойдёт автоматически.
Этим можно воспользоваться выполнив передачу результатов расчёта в виде статических таблиц. Да, можно распечатать/сохранить в pdf, или банальным Ctrl+А / Ctrl+C / Ctrl+V /только значения/. А можно просто воспользоваться простым макросом:
' Замена всех формул на листе в значения
Sub Form_2_Dan()
Dim a As Integer
' Запрашиваем подтверждение
a = MsgBox("Внимание!" & _
Chr(10) & "Вы точно хотите заменить все формулы на листе на значения?" & _
Chr(10) & "Это необратимо!", _
52, "Замена формул на значения.")
' Если OK, то замену производим
If a = 6 Then
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
End If
End Sub
Расположение макроса - модуль.
Макрос сохраняется в личный набор/надстройку и кнопка запуска выводится на панель.
Внимание! Действие макроса необратимо!
Можно сделать "триальным" расчёт разместив в модулях листов вот такого вида макрос.
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
If Date >= #10/6/2022# Then ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
Application.ScreenUpdating = True
End Sub
Т.е. после 10.06.2022 все расчёты с листа исчезнут... А цифры останутся.
Можно заменить проверку на заполнение ячейки, например проверить что в определённой ячейке записан автор труда "Вася Пупкин". :) При смене которого всё превратится в набор цифр..
Естественно доступ к макросам должен быть закрыт/запаролен.
Ещё вариант - ввод пароля на саму книгу:
Private Sub Workbook_Open()
Dim i&, n&, P As Variant
Application.ScreenUpdating = False
n = 2
If Date >= #1/2/2022# Then
For i = 1 To Sheets.Count
Sheets(i).Activate
Sheets(i).Protect "1234"
Next
1:
P = InputBox("Время использования книги истекло, для продолжения введите пароль", "ВВОД ПАРОЛЯ")
If P = "°0176" Then
For i = 1 To Sheets.Count
Sheets(i).Activate
Sheets(i).Unprotect "1234"
Next
Else
If n = 0 Then
Application.DisplayAlerts = False
ThisWorkbook.Close
Application.DisplayAlerts = True
Else
MsgBox "Пароль не верный, у вас еще " & n & " попытки"
n = n - 1
End If
GoTo 1
End If
End If
Application.ScreenUpdating = True
End Sub
Расположение макроса - "Эта книга".
#1/2/2022# - дата с которой будет запрашиваться пароль
"°0176" – правильный пароль
И при открытии файл будет встречать весёлым окошком:
Естественно можно открыть файл без выполнения макросов, но если расчёт в экселе построен на использовании макросов, то цель достигнута - расчёт производиться не будет.
И да, это всё игрушки - серьёзные дяденьки с тётеньками при необходимости поломают сие поделия, и узнают как вы определяли дискриминант... (0_о). Даже если Вы применили обфускацию кода или перенос кода в dll.