我有一个工作簿,里面有很多工作表、宏和计算。我现在需要发送这份工作表(昨天之前没有想到)。我该如何锁定它,以便用户:
- 无法访问/查看宏?
- 无法取消隐藏隐藏的工作表?
- 无法查看代码或添加代码/
我检查过并解锁了那些我想让它们更改的单元格。隐藏了按钮和公式行,然后锁定了它们。隐藏了工作表。我现在用密码保护了工作表。
然而,这会阻止用户访问宏/代码吗?或者取消隐藏工作表?如果没有,我该如何正确/安全/完全地锁定工作簿?
这听起来像是老大哥类型的安全保护,但我只是想确保所有相互链接的单元格不会被意外更改,或者运行我不需要它们运行的宏。
非常感谢
迈克尔。
答案1
首先,请注意 Excel 中的大多数保护功能都是不是安全功能。大多数功能很容易被破解或绕过。它们可以很好地阻止意外损坏 - 但无法阻止任何知道自己在做什么并真正想看到您隐藏的信息的人。
以下是一些答案:
初始保护
你已经学完了这些,基本上就是锁上牢房,藏好需要的东西。
然后保护每一个工作表。
然后保护工作簿本身。
非常隐秘的床单
可以将工作表设置为“非常”隐藏,这意味着只能通过 VBA 取消隐藏(它们不会出现在界面的取消隐藏列表中)。这只需通过一行 VBA 即可完成,需要至少运行一次才能触发设置的更改,并且运行后不需要保留在文件中(但这可能有助于记住稍后要取消隐藏哪些工作表):
Sheets("Sheet1").Visible = xlVeryHidden
隐藏的 VBA 代码
为您的项目设置密码。在 VBA 编辑器中,右键单击 中的模块Project Explorer
,选择选项卡<ProjectName> Properties
并设置密码Protection
。
请注意,这些可以通过暴力破解打开。
隐藏宏
我假设您的意思是当有人打开窗口时您不希望它们出现在宏列表中Run Macro
?
为此,请将所需的宏设为 aPrivate Sub
或 a Function
,这使得它们作为宏不可见,但仍然允许它们被同一模块中的其他代码调用。
我不认为你不能阻止人们跑步可见的宏,并且您不能将隐藏的宏分配给按钮。
答案2
如果你只是希望收件人不会意外更改某些位,Excel 的保护就足够了。但是如果你不希望接收工作簿的人看到机密数据,那么这些保护就无济于事了。
如果您只想显示数据而不显示格式,那么“清除”所有隐藏数据的一个简单方法是将每张工作表导出为 CSV,然后将其重新导入为新的 Excel 工作簿。(第二步严格来说不是必需的,但人们不习惯使用 CSV 文件,因此最好像他们期望的那样发送 Excel 文件。)
如果您希望获得人们无法修改的美观输出,请将表格打印为 PDF 文件并发送。