我有以下代码来保护Excel 2007中的工作簿工作表
Private Sub password_protectallsheets()
For Each ws In Worksheets
ws.protect Password = "edc1"
Next
End Sub
但是当我尝试通过Excel 2007菜单(查看 - >取消保护表)使用密码取消保护工作表时,它表示您提供的密码不正确。
非常感谢任何帮助。
答案 0 :(得分:1)
密码参数需要用“:=”指定 - 而不仅仅是“=”。对于方法的参数,这是正确的:
ws.protect Password := "edc1"
要使编译器捕获这些类型的错误,请始终在模块的开头使用Option Explicit,如上面的JMax所做的那样。当您这样做时,编译器会在您忘记“:”选项时给出“变量未定义”错误。显式选项将为您节省大量时间和其他类型的变量声明错误。要为所有新模块启用它,请在VBE中选中工具>选项>编辑>要求变量声明。
我无法弄清楚的部分是为什么,在没有“:”的代码中,根本没有分配密码。我本来希望这张表得到保护,但没有密码。
答案 1 :(得分:0)
Ws.Unprotect真的能保护工作表吗? - 它无法保护未设置保护的工作表
在宏中设置保护为什么不记录保护工作表并查看代码
答案 2 :(得分: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
)。
答案 3 :(得分:0)
此ws.protect Password = "edc1"
或ws.protect Password := "edc1"
无效!
必须通过变量发送密码才能修复此错误!
尝试一下,它对我有用:
一张纸
Sub Protect()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("SHEET")
Dim strPassword As String: strPassword = "YourPassword"
ws.Protect Password:=strPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
UserInterfaceOnly:=True, AllowFormattingCells:=False, AllowFormattingColumns:=False, _
AllowFormattingRows:=False, AllowInsertingColumns:=False, AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=False, AllowDeletingColumns:=False, AllowDeletingRows:=False, _
AllowSorting:=False, AllowFiltering:=False, AllowUsingPivotTables:=False
End Sub
和
Sub UnProtect()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("SHEET")
Dim strPassword As String: strPassword = "YourPassword"
ws.Unprotect Password:=strPassword
End Sub
所有工作表
Sub ProtectAllSheets()
Dim ws As Worksheet
Dim strPassword As String: strPassword = "YourPassword"
For Each ws In Worksheets
ws.Protect Password:=strPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
UserInterfaceOnly:=True, AllowFormattingCells:=False, AllowFormattingColumns:=False, _
AllowFormattingRows:=False, AllowInsertingColumns:=False, AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=False, AllowDeletingColumns:=False, AllowDeletingRows:=False, _
AllowSorting:=False, AllowFiltering:=False, AllowUsingPivotTables:=False
Next ws
End Sub
和
Sub UnProtectAllSheets()
Dim ws As Worksheet
Dim strPassword As String: strPassword = "YourPassword"
For Each ws In Worksheets
ws.Unprotect Password:=strPassword
Next ws
End Sub