How to protect Excel workbook using VBA?

前端 未结 3 809
名媛妹妹
名媛妹妹 2020-12-03 19:10

With a trigger like a check box I want to protect my work book. I tried Excel 2003:

thisworkbook.protect(\"password\",true,true)

thisworkbook.unprotect(\"pa         


        
3条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-03 19:42

    I agree with @Richard Morgan ... what you are doing should be working, so more information may be needed.

    Microsoft has some suggestions on options to protect your Excel 2003 worksheets.

    Here is a little more info ...

    From help files (Protect Method):

    expression.Protect(Password, Structure, Windows)
    

    expression Required. An expression that returns a Workbook object.

    Password Optional Variant. A string that specifies a case-sensitive password for the worksheet or workbook. If this argument is omitted, you can unprotect the worksheet or workbook without using a password. Otherwise, you must specify the password to unprotect the worksheet or workbook. If you forget the password, you cannot unprotect the worksheet or workbook. It's a good idea to keep a list of your passwords and their corresponding document names in a safe place.

    Structure Optional Variant. True to protect the structure of the workbook (the relative position of the sheets). The default value is False.

    Windows Optional Variant. True to protect the workbook windows. If this argument is omitted, the windows aren’t protected.

    ActiveWorkbook.Protect Password:="password", Structure:=True, Windows:=True
    

    If you want to work at the worksheet level, I used something similar years ago when I needed to protect/unprotect:

    Sub ProtectSheet()
        ActiveSheet.Protect "password", True, True
    End Sub
    
    Sub UnProtectSheet()
        ActiveSheet.Unprotect "password"
    End Sub
    
    Sub protectAll()
        Dim myCount
        Dim i
        myCount = Application.Sheets.Count
        Sheets(1).Select
        For i = 1 To myCount
            ActiveSheet.Protect "password", true, true
            If i = myCount Then
                End
            End If
            ActiveSheet.Next.Select
        Next i
    End Sub
    

提交回复
热议问题