测试VBAProject是否通过来自personal.xlsb的宏进行了保护

时间:2019-01-18 16:33:40

标签: excel vba

我在personal.xlsb中创建了一些宏来测试其他Excel工具。宏应该测试打开的文档的VBAProject是否具有密码保护。

我在personal.xslb中创建了以下代码,无论是否为测试文档设置密码,该代码始终显示True。

Sub testVBAPasswort()
   '1 = VB-Project protected
   '0 = VB-Project not protected
    If Application.ActiveWorkbook.VBProject.Protection = 1 Then
        MsgBox "False"
    Else
        MsgBox "True"
    End If
End Sub

1 个答案:

答案 0 :(得分:3)

尝试测试VBProject的元素。我使用Workbook.VBPRoject.VBComponents.Count完成此操作。然后,我利用错误处理程序测试Err.Number = 50289,这意味着该工作簿受密码保护并且当前已锁定。当然,VBProject一旦解锁,就不会再出现该错误。

编辑:

您应该直接引用您要测试的工作簿,否则您可能正在测试personal.xlsb本身。如果您需要能够动态测试工作簿,则只需添加

Dim w as Workbook
For each w in Application.Workbooks
    If Not w.Name = "personal.xlsb" Then
        If w.VBProject.Protection = 1 Then
            MsgBox w.Name & " Password Protected"
        Else
            MsgBox w.Name & " Not Password Protected"
        End If
    End If
Next w