VBA Excel:表单保护:UserInterFace只剩下了

在VBA Excel中,如果使用UserInterFaceOnly:= True选项保护工作表,然后closures并再次打开文件,则UserInterFaceOnly模式不处于活动状态,只有密码保护。

代码: ActiveSheet.Protect Password:="myPassword", UserInterfaceOnly:=True

为什么?

无法在重新打开工作簿后重新应用UserInterfaceOnly:=True 。 取自Excel的Vb 保护方法参考:

如果将UserInterfaceOnly参数设置为true并应用此方法,然后保存工作簿,重新打开工作簿时,整个工作表(而不仅仅是接口)将被完全保护。 要打开工作簿后重新启用用户界面保护,您必须再次应用此方法UserInterfaceOnly设置为true

现在,如果你担心这需要很长时间(如你所说,15秒),那么看看这个代码审查的答案。 我已经在几个复杂程度不同的工作簿中完成了这个工作,在我尝试的所有版本(包括2010)中,重新应用保护的时间是微不足道的。

我不确定问题的原因是什么,但是可以通过向Workbook_Open()事件添加保护代码来避开此问题,将每个表保护都重置为使UserInterfaceOnly:=True