Excel:保护密码与 VBA 密码不兼容?

Excel: Protect password not compatible with VBA password?

我知道在 Excel -

中使用密码保护 sheet 的 2 种可能方法
  1. 手动密码保护
  2. 密码保护使用 VBA

这就是我难过的地方。我使用 VBA 对 sheet 进行了密码保护,然后尝试使用 VBA 中使用的相同密码手动取消保护。但是 Excel 抛出一个错误,说提供的密码不正确。我也尝试了相反的方法——手动保护文件,然后尝试使用 VBA 取消保护,在代码中提供正确的密码;同样的错误。知道为什么会这样吗?

如果我没有正确理解你的问题,那是因为每个密码保护的内容不同。它们不是同一件事。您可以有一个不受密码保护的工作簿,但 VBA 代码 密码保护。

经过一些分析,我弄清楚了我的代码中的问题 -

ActiveWorkbook.Protect Password = "xyz", Structure:=True, Windows:=False

密码选项分配有“=”符号而不是“:=”。此代码仍然保护 sheet 但密码为空。当我使用类似的取消保护代码时,

ActiveWorkbook.Unprotect Password = "xyz"

解除保护代码传递的是空密码。因此,如果我尝试使用 "xyz" 的手动密码,它会引发错误。

解决问题的正确代码是

ActiveWorkbook.Protect Password:= "xyz", Structure:=True, Windows:=False
ActiveWorkbook.Unprotect Password:= "xyz