我使用各种关键字搜索了上述问题,但是所有结果要么与如何保护工作簿有关,要么与不知道密码的情况解除保护有关。

我当前的问题并不是什么大问题,但是感觉很奇怪,我想知道其他人是否曾经/正在经历它。

我目前正在制作Excel 2010 VBA宏来自动化数据处理。我要添加工作簿保护,以便用户不能移动工作表的位置。我是通过VBA“ thisworkbook.protect”或传统的Excel菜单完成此操作的。

当我运行以下代码时,无论密码,结构/窗口设置如何,工作簿保护都会完全消失。

Sub test()
        ThisWorkbook.Worksheets(1).Cells(1, 1).Value(11) = ThisWorkbook.Worksheets(3).Cells(1, 1).Value(11)
End Sub


只需在代码末尾添加“ thisworkbook.protect”,即可重新锁定工作簿并解决问题,这就是为什么这不是大问题。但是这种现象对我来说是完全不可理解的。

我感谢提供反馈的任何人。谢谢。

编辑1
我相信这不是一个worksheet.protect问题。无论工作表和单元格是否受保护,都会出现我的问题,我特别担心工作表的位置和名称,它们属于workbook.protect命令。

编辑2:
因此,问题出在下面,与Workbook.ProtectWorksheet.Protect方法之间的区别无关:
1.我打开一个受保护的工作簿;
2.运行提供的代码片段而不取消保护工作簿,因为它不会影响工作表的保护;
3.尽管有我的意图,但工作簿保护已被先前的操作取消。必须再次保护工作簿。

最佳答案

好的,微软的回答是:


如果我正确解释了您的发现,则此报告为
假定攻击者已复制并访问了Excel文件
包含没有密码保护的工作簿/工作表/字段
已加密。在这种情况下,这是预期功能。


我的报告立即关闭,因此我没有机会坚持要解决这个错误。

因此他们从字面上说这是一个“功能”(预期功能)而不是错误。显然,他们认为工作簿保护不是安全功能,唯一的安全保护是使用您实际需要输入的密码来加密工作簿,然后才能查看它。

恕我直言,这仍然是一个错误,并且不是预期的行为。但是Microsoft显然并不在乎哪个是非常有争议的,因为此错误意味着工作簿保护是无用的,只会阻止用户意外破坏某些东西。

因此,或者您找到一种解决方法,因为您知道可以在运行该类型的代码后重新保护它,或者您不使用导致错误的“功能”。

但是仍然知道此错误的任何人都可以使用它从任何工作簿中删除工作簿保护。我看不到任何阻止删除的方法。而且,由于此错误已经在Excel 2010和最新版本中起作用,因此Microsoft不太可能在不久的将来修复此错误。

关于excel - 无论密码如何,Workbook Protection均不 protected (VBA Excel 2010),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59999454/

10-08 23:23