2011-09-06 282 views
0

我在寻找可以为我的Excel项目添加额外安全级别的可能性。在Excel 2010中禁用VBA代码编辑器窗口

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

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

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

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

任何帮助将是伟大的。

回答

2

我来自Excel 2003,但这个概念也应该为你工作。你能想到的

  • 诱捕的Alt-F11键(Application.OnKey "%{F11}" "MyNullSub")加
  • Sub MyNullSub() 
    ' do nothing 
    End Sub 
    

    禁用相关的菜单项(Application.CommandBars(...).FindControl(ID:=..).OnAction = "MyNullSub"

为的依赖需要在场(GetSetting(...)),但这只会有助于直到这个额外的秘密被传播出去以同样的方式显示(更改)密码显然。

+0

获得批准的用户将如何访问VB编辑器?另外,如果未经批准的用户在打开工作簿时选择不允许使用宏,则此陷印将无法使用。 –

+0

@Jean as我写道:作为一个注册表设置的依赖,即只有在某个注册表项不存在的情况下才会布置陷阱。超级用户将被告知在“HKEY_CURRENT_USER \ Software \ VB和VBA设置”下面设置一个特定的密钥....这是第二层保护....正如我上面所说的那样,这也不是一个超级安全和防伪机制但总比没有好 – MikeD

+0

好吧,我现在明白了。我敢肯定,注册表关键字技巧会比密码传播慢得多*。 +1,因为我认为这个问题没有很好的答案,但是这非常接近! –