Использование объекта защиты в VBA
Есть ли способ сохранить .protection
объект в VBA и использовать его для защиты листа снова с параметрами, сохраненными в объекте?
Я знаю, что можно сохранить объект, но я не могу использовать его, чтобы снова защитить лист.
Мне это нужно, потому что разные листы имеют разные защитные профили, и я хочу использовать это в цикле.
Set wsp = workbookname.Sheets(sheetname).Protection
и чтобы защитить лист снова, я хотел бы использовать что-то вроде этого:
workbookname.Sheets(sheetname).Protect wsp
1 ответ
Решение
Например, вы можете создать класс s для каждого из ваших профилей с настройками, например. НТН
' Class module SomeProtectionProfile
Private m_password As Variant
Private m_drawingObjects As Variant
Private m_contents As Variant
Private m_scenarios As Variant
Private m_userInterfaceOnly As Variant
Private m_allowFormattingCells As Variant
Private m_allowFormattingColumns As Variant
Private m_allowFormattingRows As Variant
Private m_allowInsertingColumns As Variant
Private m_allowInsertingRows As Variant
Private m_allowInsertingHyperlinks As Variant
Private m_allowDeletingColumns As Variant
Private m_allowDeletingRows As Variant
Private m_allowSorting As Variant
Private m_allowFiltering As Variant
Private m_allowUsingPivotTables As Variant
Private Sub Class_Initialize()
m_password = "SomePsw1"
' and others like m_drawingObjects, m_contents ...
End Sub
Public Sub Protect(sheetToProtect As Worksheet)
sheetToProtect.Protect Password:=m_password ' , ... and others
End Sub
' Standard module
Sub main()
With New SomeProtectionProfile
.Protect workbookname.Sheets(sheetname)
End With
End Sub