首页 > 解决方案 > Excel VBA:如何禁用对非常隐藏选项卡的外部引用?

问题描述

我有一个受密码保护的 Excel 文件要发送给最终用户。工作簿中有非常隐藏的选项卡。

我想阻止所述最终用户仅打开一个新工作簿,创建对其中一个非常隐藏的选项卡的单元格引用,假设他们可以猜测这些选项卡名称(通用名称(例如“输入”))并从那里重新创建文件。

有没有办法在 VBA 中做到这一点?

标签: excelvba

解决方案


您可以轻松破解受密码保护的 Excel 电子表格,因此无论您做什么,人们仍然可以看到。

我尝试使用链接的工作簿在另一个受密码保护的电子表格中引用数据,然后我更改了工作表,但它没有更改数据源。因此,默认情况下,它不会让您“猜测”或选择 Hidden 或 VeryHidden 工作表。

但是,当复制/粘贴特殊 -> 粘贴链接时,我所知道的一切都无法阻止人们更改参考地址。

=[Spreadsheet.xlsm]Sheet3!B2

除非在 Workbook_Change 事件中您要求某些关键字不能用作单元格引用。

在 WorkSheet 后面的代码中:

Private Sub Worksheet_Change(ByVal Target As Range)    
  If InStr(1, Range(Target.Address).Value, "reserved", vbTextCompare) > 0 Then
    Range(Target.Address).Value = Replace(Range(Target.Address).Value, "reserved", "")
    Call MsgBox("Please don't use ""reserved"" keywords.", vbInformation)
  End If    
End Sub

同样,人们会在 VBA 代码中看到这一点,而您不能混淆它。答案是不。


推荐阅读