我用各种关键字搜索了上述问题,但所有结果要么与如何保护工作簿有关,要么在不知道密码的情况下解除保护。
我目前的问题并不是什么大问题,但我觉得很奇怪,我想知道其他人是否经历过这个问题。
我目前正在制作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.Protect和Worksheet.Protect方法之间的区别:
发布于 2020-02-12 07:07:35
好吧,微软的回答是:
如果我正确地解释了您的发现,则此报告的前提是攻击者复制和访问了包含未加密的密码保护工作簿/工作表/字段的Excel文件。在这种情况下,这是一个预期的函数。
我的报告立刻被关闭了,所以我没有机会坚持这个错误。
所以他们直截了当地说这是一个“功能”(预期的函数),而不是一个bug。显然,他们认为工作簿保护不是安全特性,唯一的安全保护是使用密码加密工作簿,在查看之前实际上需要输入密码。
IMHO,这仍然是一个错误和一个意想不到的行为。但是微软显然并不在意这一点,因为这个bug意味着工作簿保护是无用的,只会阻止用户意外地破坏一些东西。
所以,要么您找到了解决办法,因为您知道可以在运行该类型的代码后重新保护它,或者您没有使用导致bug的“特性”。
但是,任何知道这个错误的人都可以使用它从任何工作簿中删除工作簿保护。我看不出有什么办法能阻止移除。而且,由于这个bug已经在Excel 2010以及最近的版本中运行,微软在不久的将来不太可能修复这个问题。
https://stackoverflow.com/questions/59999454
复制相似问题