2011-11-24 113 views
2

我有下面的代码,以保护工作簿的表在Excel 2007中工作表保护使用ws.protect设置

Private Sub password_protectallsheets() 
For Each ws In Worksheets 
ws.protect Password = "edc1" 
Next 
End Sub 

但是当我尝试使用密码通过Excel 2007菜单取消保护工作表(查看 - >取消保护表),它表示您提供的密码不正确。

任何帮助非常感谢。

回答

0

Ws.Unprotect是否真的保护工作表? - 切切实实的它取消保护工作表不设置保护

设置保护在宏为什么不记录保护工作表,并看看代码

+0

这是一个错字。自从编辑了我的帖子。 – ashleych

0

尝试:

Option Explicit 

Private Sub password_protectallsheets() 
    Dim ws As Worksheet 
    For Each ws In Worksheets 
     ws.Protect "edc1" 
    Next 
End Sub 

没有password关键参数。
它的工作对我的Excel 2007中

顺便说一句,一定要复制/粘贴密码或一定要检查,如果最后一个字符是一个阉1(一个)或l(小写字母L)。

1

密码参数需要用“:=”指定 - 不只是“=”。这是方法的参数真一般:

ws.protect Password := "edc1" 

可以让编译器捕获这些类型的错误,始终使用选择的模块的开头明确,如JMAX上面已经做。当你这样做的时候,当你忘记“:”选项时,编译器会给你一个“Variable not Defined”错误选项Explicit将为你节省大量的时间和其他类型的变量声明错误。要为所有新模块启用它,请在VBE中选中工具>选项>编辑>需要变量声明。

我找不到的部分是为什么在没有“:”密码的代码中完全分配了。我希望这张表能够得到保护,但没有密码。