VBA保护功能应用错误的密码

时间:2017-11-28 12:59:57

标签: excel-vba vba excel

我使用这行代码

启动Workbook_Open事件
Table1.Protect Password = "Secret", UserInterFaceOnly:=True

然而,当我尝试用

解锁时
Table1.Unprotect ("Secret")

它不起作用。

密码破解者说,工作密码将是" AAAAAAAABABF"

我如何实际设置"秘密"作为密码。

2 个答案:

答案 0 :(得分:4)

这是一个常见的错误(我写的很常见:http://excelmatters.com/2013/10/03/whats-in-a-colon/)。

您的Protect代码缺少冒号:

Table1.Protect Password:="Secret", UserInterFaceOnly:=True

您实际上是使用密码False保护工作簿,因为这是表达式的结果:

Password = "Secret"

答案 1 :(得分:3)

TL; DR 阅读Rory写的文章(在下面的答案中)

首先,您的保护代码错误(缺少冒号:):

Table1.Protect Password = "Secret", UserInterFaceOnly:=True

这是分配Password,它将被视为未声明的变量(您是否忘记使用Option Explicit?)

应该是这样的:

Table1.Protect Password:= "Secret", UserInterFaceOnly:=True
  

密码破解者说,工作密码是“AAAAAAAABABF”

这是因为Excel中的这些密码不安全(这是有详细记录的)。 Excel中这种性质的密码依赖于更多的数值,其中每个字符都分配了一个数值......所以:

d = 4
a = 1

(a + a + a + a) = d

所以在这种情况下使用daaaa将作为您的密码。 (这是它如何工作的一个粗略的例子,而不是确切的方法)。