Как защитить книгу с помощью vba?

Чтобы защитить книгу, необходимо использовать метод PROTECT VBA. Используя этот метод, вы можете использовать пароль или даже включить защиту книги без пароля. Но есть одна вещь, которую вам нужно учитывать при выборе пароля: УЧИТЫВАТЬ К регистру.

 Workbook.Protect "Password"
  1. Укажите книгу, которую хотите защитить.
  2. Нажмите, укажите и выберите метод защиты из списка или нажмите «Защитить».
  3. Введите пароль, который вы хотите установить.
  4. Запустите код для защиты книги.

В этом уроке мы изучим этот метод разными способами, а также узнаем, как снять защиту с книги.

Полезные ссылки: Запуск макросаСредство записи макросовРедактор Visual BasicПерсональный справочник по макросам

Защитите книгу паролем

Ниже приведен код, который необходимо использовать для защиты книги паролем. В этом коде сначала указывается имя книги и метод защиты паролем.

 Workbooks("Book1").Protect "test123"

И когда я запускаю этот код, он блокирует книгу «Книга1».

он блокирует папку book1

Защитите книгу без пароля

А если вы хотите защитить книгу без пароля, вам следует игнорировать аргумент «Пароль», как в следующем коде.

 Workbooks("Book1").Protect

Если вы попытаетесь защитить книгу без пароля, которая уже защищена паролем, Excel отобразит диалоговое окно для ввода этого пароля.

Снять защиту книги с помощью пароля

Таким же образом вы можете использовать метод unprotect, чтобы снять защиту с книги, и код для нее будет выглядеть примерно так, как показано ниже.

 Workbooks("Book1").Unprotect "test123"

Есть одна вещь, о которой вам нужно позаботиться, если вы пытаетесь снять защиту с рабочей книги.

Снять защиту книги без пароля

А если книга защищена без пароля, вы можете использовать тот же метод без указания аргумента пароля.

Защитите все открытые книги

В приведенном ниже коде у нас есть цикл FOR EACH , который перебирает все открытые книги и защищает каждую книгу одну за другой, используя один и тот же метод защиты.

 'variable to use as a workbook Dim wb As Workbook 'loop through all the open workbooks For Each wb In Application.Workbooks 'condition to check workbook name If wb.Name <> "PERSONAL.XLSB" Then 'protect every workbook with a password wb.Protect "test123" End If Next wb End Sub

Поскольку я использую личную книгу макросов, я использовал оператор IF THEN ELSE , чтобы игнорировать имя книги « personal.xlsb ». Также убедитесь, что вы позаботились об этом.

Защита закрытой книги

Вы также можете защитить и снять защиту закрытой книги, сохраненной в определенном месте. Посмотрите на следующий код, в котором я использовал местоположение своего рабочего стола для использования файла «test.xlsx».

 Sub vba_protect_workbook() 'declare varibale to use for the workbook Dim wb As Workbook 'open the workbook that you want to protect Set wb = Workbooks.Open("C:UsersDellDesktoptest.xlsx") 'turn off the screen-updating to _ done everything in the backend Application.ScreenUpdating = False 'protect the workbook wb.Protect 'close the workbook after protecting wb.Close SaveChanges = True 'turn off the screen-updating Application.ScreenUpdating = True End Sub

В приведенном выше коде используется метод Workbook.Open, чтобы открыть книгу, которую вы хотите защитить, а затем отключить обновление экрана для работы на серверной стороне.

Защитите все закрытые книги в папке

Следующий код просматривает все книги, находящиеся в папке, указанной вами в качестве пути. А затем откройте каждую папку, защитите ее и закройте одну за другой.

 Sub vba_protect_all_the_workbooks() 'declare variables Dim wb As Workbook Dim myPath As String Dim myFile As String Dim myExtension As String Dim FldrPicker As FileDialog 'optimize macro Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual 'specify the folder where workbooks are saved myPath = "C:UsersDellDesktopfolder" 'jump to reset setting if there's an error On Error GoTo ResetSettings 'target file fxtension (must include wildcard "*") myExtension = "*.xls*" 'target path myFile = Dir(myPath & myExtension) 'Loop through each Excel file in folder Do While myFile <> "" 'Set variable equal to opened workbook Set wb = Workbooks.Open(Filename:=myPath & myFile) 'protect workbook wb.Protect 'Save and Close Workbook wb.Close SaveChanges:=True 'Get next file name myFile = Dir Loop 'Message Box when task is completed MsgBox "Done!" 'reset setting that were change for optimization ResetSettings: Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *