使用VBA保护VBA项目

时间:2015-06-30 09:33:29

标签: vba excel-vba excel

当我的VB项目完成运行时,它会保存excel工作簿的新副本,然后通过电子邮件将其发送到提供的发行版。当代码运行时,VB项目应该是不受保护的,允许VBE抛出的任何错误被调试" (这对于锁定的项目是不可能的 - 不幸的是,在错误处理程序中无法解释调试的原因;它主要与针对SQL Server数据库运行的查询有关。)

但是,我希望VB项目在作为新副本保存后能够得到保护,防止接收分布式副本的任何人能够访问VB项目。

我已经进行了搜索,似乎无法找到与使用VBA锁定VB项目相关的任何答案。任何指导都表示赞赏。

1 个答案:

答案 0 :(得分:1)

基于this thread

Sub ProtectVBProject(WB As Workbook, ByVal Password As String) 

    Dim VBP As VBProject, oWin As VBIDE.Window 
    Dim wbActive As Workbook 
    Dim i As Integer 

    Set VBP = WB.VBProject 
    Set wbActive = ActiveWorkbook 

    ' Close any code windows To ensure we hit the right project 
    For Each oWin In VBP.VBE.Windows 
        If InStr(oWin.Caption, "(") > 0 Then oWin.Close 
    Next oWin 

    WB.Activate 
    ' now use lovely SendKeys To unprotect 
    Application.OnKey "%{F11}" 
    SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & Password & "~" 
    Application.VBE.CommandBars(1).FindControl(Id:=2578, recursive:=True).Execute 
    WB.Save 
End Sub