![](/img/trans.png)
[英]Is it possible to create COM add-in for excel using excel vba?
[英]Protect VBA Project using Excel Add-in
要求是使用Excel-Add-in保护工作簿的VBA项目的密码。
这可能吗?
目前我们有一个Excel加载项(xlam),它可以对打开的每个工作簿执行所有操作。 我们通过加载项实现了工作表的锁定。 现在我们还想保护那些打开的工作簿的VBA。 以下是我们从各种论坛中找到的代码
With Application
'execute the controls to lock the project
.VBE.CommandBars("Menu Bar").Controls("Tools") _
.Controls("VBAProject Properties...").Execute
'activate protection
.SendKeys "^{TAB}"
'CAUTION: this either checks OR UNchecks the
'Lock Project for Viewing checkbox, if it's already
'been locked for viewing, then this will UNlock it\
.SendKeys "{ }"
'enter password
.SendKeys "{TAB}" & VBAProjectPassword
'confirm password
.SendKeys "{TAB}" & VBAProjectPassword
'scroll down to OK key
.SendKeys "{TAB}"
'click OK key
.SendKeys "{ENTER}"
'the project is now locked - this takes effect
'the very next time the book's opened...
End With
但是这个代码的问题是它保护了加载项本身的VBA而不是工作簿。 我们需要一些代码或解决方法来通过将在Excel加载项中编写的代码来保护工作簿的VBA。
SendKeys
方法只能在VBE中活动的任何项目上运行...这可能是也可能不是加载项目。
VBIDE API没有公开任何东西以编程方式保护VBProject,所以SendKeys
是唯一的方法 - 但是你应该关闭所有打开的代码窗口并激活主机工作簿,以确保你达到正确的目标项目,如这个ozgrid的帖子 。
请注意,VBA宏保护很容易被破坏,因此对于需要维护项目的VBA dev来说,这比想要破解它的人更烦恼:它是一个相当具有象征意义的保护,比什么都重要否则..但解析和处理VBE中的代码的VBE加载项,如Rubberduck (免责声明:我大量参与该项目)将无法解析受保护的VBA项目,因此可以使用项目保护来增强静态代码分析表现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.