繁体   English   中英

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

[英]How to protect Excel workbook using VBA?

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

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

thisworkbook.unprotect("password")

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

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

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

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

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

expression.Protect(Password, Structure, Windows)

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

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

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

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

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

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

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

要锁定整个工作簿,可以在VBA中使用Thisworkbook.password选项。

如果要保护工作表,则必须先使用选项Thisworkbook.sheets.cells.locked = True锁定单元格,然后使用选项Thisworkbook.sheets.protect password:="pwd"

主要搜索这些关键字: Thisworkbook.passwordThisworkbook.Sheets.Cells.Locked

  1. 在示例代码中,您必须删除括号,因为它不是功能分配; 同样出于文件原因,我建议您使用:= notation(参见下面的代码示例)

    1. Application.Thisworkbook是指包含VBA代码的书,不一定是包含数据的书,所以要小心。

将您正在处理的工作表作为工作表对象进行表达,并将其与逻辑变量一起传递给以下子工具:

Sub SetProtectionMode(MySheet As Worksheet, ProtectionMode As Boolean)

    If ProtectionMode Then
        MySheet.Protect DrawingObjects:=True, Contents:=True, _
                        AllowSorting:=True, AllowFiltering:=True
    Else
        MySheet.Unprotect
    End If
End Sub

.Protect方法中,您可以定义要允许/禁止的内容。 此代码块将打开/关闭保护 - 在此示例中没有密码,您可以将其添加为参数或在Sub中进行硬编码。 无论如何,PW将被硬编码。 如果您不想这样做,只需调用Protection Dialog窗口并让用户决定该怎么做:

Application.Dialogs(xlDialogProtectDocument).Show

希望有所帮助

祝你好运 - 迈克

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM