【问题标题】:Disable the VBA code editor window in Excel 2010在 Excel 2010 中禁用 VBA 代码编辑器窗口
【发布时间】:2011-09-06 18:56:51
【问题描述】:

我正在寻找为我的 Excel 项目增加额外安全级别的可能性。

我们有多个用户。一些知道(并且打算)解锁 VBA 宏的密码的人。其他人不应该能够访问这些。

我不确定是否有人拥有不应该使用的密码(更改密码并没有停止篡改),所以我想为任何未经批准的用户禁用 VBA 编辑窗口。我找不到任何方法可以做到这一点,有可能吗?

我无法禁用保存选项,因为所有用户都需要保存数据。

我尝试禁用功能区图标等,但没有成功。 Alt+F11仍然可以打开代码窗口。

任何帮助都会很棒。

【问题讨论】:

    标签: excel excel-2010 vba


    【解决方案1】:

    我来自 Excel 2003,但这个概念也应该适用于您。你可以想到

    • 捕获 Alt-F11 键 (Application.OnKey "%{F11}" "MyNullSub") 加
    • 禁用相关菜单项 (Application.CommandBars(...).FindControl(ID:=..).OnAction = "MyNullSub")

    Sub MyNullSub()
    ' do nothing
    End Sub
    

    作为注册表中需要存在的条目的依赖项 (GetSetting(...)),但这只会在这个额外的秘密以与(更改的)密码相同的方式传播之前有所帮助。

    【讨论】:

    • 获得批准的用户将如何访问 VB 编辑器?此外,如果未经批准的用户在打开工作簿时选择不允许宏,则此陷印将不起作用。
    • @Jean 正如我所写:作为对注册表设置的依赖,即只有在某个注册表项不存在时才会布置陷阱。超级用户将被告知在“HKEY_CURRENT_USER\Software\VB 和 VBA 设置”下面设置某个密钥……这是第二层保护……正如我上面所说,这也不是超级安全和防伪机制但总比没有好
    • 好的,我现在明白了。我确信注册表项技巧的传播速度会比密码慢很多! +1,因为我认为这个问题没有很好的答案,但这非常接近!
    • @Jean 我很感兴趣并进一步研究了这个案例。我开始使用数据库的身份验证机制。即用户必须输入 UN 和 PW 并且 VBA 尝试连接并触发虚拟查询。如果成功 - 好,如果不退出。工作很酷,消除了一些头痛。由于底层网络协议,这也非常安全。我将对此进行扩展并尝试通过安全网站 (SSL) 进行身份验证
    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2011-04-01
    • 1970-01-01
    相关资源
    最近更新 更多