Страницы: 1
RSS
Защита листа VBA
 
Подскажите, каким способом определить защищен лист или нет. Надо чтобы в макросе прописать условие для If. Т.е. если защищен снимаем, если нет ставим защиту.
 
Вот кусочек чужого кода, разбирайте :)  
 
Sub tt()  
       Const DBLSPACE As String = vbNewLine & vbNewLine  
       Const HEADER As String = "AllInternalPasswords User Message"  
       Const ALLCLEAR As String = DBLSPACE & "The workbook should " & _  
               "now be free of all password protection, so make sure you:" & _  
               DBLSPACE & "SAVE IT NOW!" & DBLSPACE & "and also" & _  
               DBLSPACE & "BACKUP!, BACKUP!!, BACKUP!!!" & _  
               DBLSPACE & "Also, remember that the password was " & _  
               "put there for a reason. Don't stuff up crucial formulas " & _  
               "or data." & DBLSPACE & "Access and use of some data " & _  
               "may be an offense. If in doubt, don't."  
       Const MSGNOPWORDS1 As String = "There were no passwords on " & _  
               "sheets, or workbook structure or windows." '& AUTHORS & VERSION  
       Const MSGNOPWORDS2 As String = "There was no protection to " & _  
               "workbook structure or windows." & DBLSPACE & _  
               "Proceeding to unprotect sheets." ' & AUTHORS & VERSION  
       Const MSGTAKETIME As String = "After pressing OK button this " & _  
               "will take some time." & DBLSPACE & "Amount of time " & _  
               "depends on how many different passwords, the " & _  
               "passwords, and your computer's specification." & DBLSPACE & _  
               "Just be patient! Make me a coffee!" ' & AUTHORS & VERSION  
       Const MSGPWORDFOUND1 As String = "You had a Worksheet " & _  
               "Structure or Windows Password set." & DBLSPACE & _  
               "The password found was: " & DBLSPACE & "$$" & DBLSPACE & _  
               "Note it down for potential future use in other workbooks by " & _  
               "the same person who set this password." & DBLSPACE & _  
               "Now to check and clear other passwords." '& AUTHORS & VERSION  
       Const MSGPWORDFOUND2 As String = "You had a Worksheet " & _  
               "password set." & DBLSPACE & "The password found was: " & _  
               DBLSPACE & "$$" & DBLSPACE & "Note it down for potential " & _  
               "future use in other workbooks by same person who " & _  
               "set this password." & DBLSPACE & "Now to check and clear " & _  
               "other passwords." '& AUTHORS & VERSION  
       Const MSGONLYONE As String = "Only structure / windows " & _  
                "protected with the password that was just found." & _  
                ALLCLEAR ' & AUTHORS & VERSION & REPBACK  
       Dim w1 As Worksheet, w2 As Worksheet  
       Dim i As Integer, j As Integer, k As Integer, l As Integer  
       Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer  
       Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer  
       Dim PWord1 As String  
       Dim ShTag As Boolean, WinTag As Boolean  
         
       Application.ScreenUpdating = False  
       With ActiveWorkbook  
           WinTag = .ProtectStructure Or .ProtectWindows  
       End With  
       ShTag = False  
       For Each w1 In Worksheets  
               ShTag = ShTag Or w1.ProtectContents  
       Next w1  
       If Not ShTag And Not WinTag Then  
           MsgBox MSGNOPWORDS1, vbInformation, HEADER  
           Exit Sub  
       End If  
       MsgBox MSGTAKETIME, vbInformation, HEADER  
       If Not WinTag Then  
           MsgBox MSGNOPWORDS2, vbInformation, HEADER  
       End If  
End Sub
 
Спасибо:) Я уж лучше в справки посмотрю  
Worksheet.Protectcontents
 
Что, шапки испугался :)  
Весь код-то всего  
 
With ActiveWorkbook  
WinTag = .ProtectStructure Or .ProtectWindows  
End With  
ShTag = False  
For Each w1 In Worksheets  
ShTag = ShTag Or w1.ProtectContents  
Next w1
Страницы: 1
Читают тему
Наверх