2010-09-11 160 views
6

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

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

thisworkbook.unprotect("password") 

它不工作。有什么建议么?

+0

电话是ActiveWorkbook.Protect和ActiveWorkbook.Unprotect,但应该工作。有关错误描述和代码位置的更多详细信息将有助于解决此问题。 – 2010-09-11 11:32:09

+0

嗨理查德,谢谢你的回复。当我使用这个工作簿.protect既没有显示错误也没有将其设置为受保护。是否我们应该开启一些功能来编写保护表单的代码。我已启用我的宏。我没有任何线索 – Ravi 2010-09-11 11:57:34

回答

7

我同意@理查德摩根...你在做什么应该工作,所以可能需要更多的信息。

微软对options to protect your Excel 2003 worksheets有一些建议。

这里是一个小的详细信息...

从帮助文件(保护法):

expression.Protect(Password, Structure, Windows) 

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

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

结构可选变体。正确以保护工作簿的结构(工作表的相对位置)。默认值是False。

Windows可选变体。正确以保护工作簿窗口。如果省略该参数,则窗口不受保护。

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 
1
  1. 在你的示例代码,你必须卸下支架,因为它不是功能性的任务;也为纪录片原因我建议您使用:=符号(见下面的示例代码)

  2. 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将被硬编码。如果你不希望这样,只需调用保护对话框窗口,让用户决定做什么:

Application.Dialogs(xlDialogProtectDocument).Show 

希望帮助

祝你好运 - 拾音

1

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

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

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

+0

这是问题的真正答案。 – 2017-02-01 15:37:52

相关问题