Использование объекта защиты в 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

введите описание изображения здесь

Другие вопросы по тегам