如何使用VBA保护Excel工作簿?

Rav*_*avi 7 excel vba excel-vba

使用像复选框这样的触发器,我想保护我的工作簿.我试过Excel 2003:

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

thisworkbook.unprotect("password")
Run Code Online (Sandbox Code Playgroud)

它不起作用.有什么建议?

Edw*_*eno 7

我同意@Richard Morgan ......你在做什么应该工作,所以可能需要更多的信息.

Microsoft 对保护Excel 2003工作表的选项提出了一些建议.

这里有更多信息......

来自帮助文件(保护方法):

expression.Protect(Password, Structure, Windows)
Run Code Online (Sandbox Code Playgroud)

表达式必需.一个返回Workbook对象的表达式.

密码可选变体.一个字符串,它指定工作表或工作簿的区分大小写的密码.如果省略此参数,则可以在不使用密码的情况下取消保护工作表或工作簿.否则,您必须指定密码以取消保护工作表或工作簿.如果忘记密码,则无法取消保护工作表或工作簿.最好将密码列表及其相应的文档名称保存在安全的地方.

结构可选变体.为了保护工作簿的结构(表单的相对位置),则为True.默认值为False.

Windows可选Variant.是的,以保护工作簿窗口.如果省略此参数,则窗口不受保护.

ActiveWorkbook.Protect Password:="password", Structure:=True, Windows:=True
Run Code Online (Sandbox Code Playgroud)

如果你想在工作表级别工作,我在几年前需要保护/取消保护时使用类似的东西:

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
Run Code Online (Sandbox Code Playgroud)