excel - Excel VBA:如何禁用对非常隐藏选项卡的外部引用?
问题描述
我有一个受密码保护的 Excel 文件要发送给最终用户。工作簿中有非常隐藏的选项卡。
我想阻止所述最终用户仅打开一个新工作簿,创建对其中一个非常隐藏的选项卡的单元格引用,假设他们可以猜测这些选项卡名称(通用名称(例如“输入”))并从那里重新创建文件。
有没有办法在 VBA 中做到这一点?
解决方案
您可以轻松破解受密码保护的 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 代码中看到这一点,而您不能混淆它。答案是不。
推荐阅读
- javascript - 为什么 useState 不在单元测试(Jest、Enzyme)中重新渲染组件?
- swiftui - 拉动刷新 SwiftUI SwiftUIRefresh / Sticky Scroll View
- node.js - 将 JS 功能添加到 nodejs express 应用程序(幻灯片)
- selenium-webdriver - JMeter Web 驱动程序 - 处理 Windows 弹出窗口
- python - 当用户对 discord.py rewrite 中的消息做出反应时,如何进行嵌入更改?
- flutter - 如何阻止我的流
- > 从 1 更改时读取所有列表项?
- reactjs - 使用 React refs 时如何解决这些 TypeScript 错误?
- ajax - Secure REST API token in a JavaScript AJAX call
- node.js - 我如何让一个不和谐的机器人 DM 成为它刚刚踢的人?
- libreoffice-base - 发生异常类型:com.sun.star.lang.IllegalArgumentException 消息:不支持的 URL <>:“来自 LoadEnv::startLoading”