excel - 通过personal.xlsb中的宏测试VBAProject是否有保护

标签 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

最佳答案

尝试测试 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

关于excel - 通过personal.xlsb中的宏测试VBAProject是否有保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54258015/

相关文章:

python - win32com 相当于 xlrd 的 sheet.ncols

excel - VBA Excel-如何通过vba取消保护和保护

vba - 使用 VBA 在 Excel 中动态生成表单

vba - 如何对命名范围使用偏移方法

visual-studio-2008 - 无法调试 Excel 2003 插件 (XLL)

excel - 检查 Excel OLE 是否可用的正确方法是什么?

vba - Excel 按名称打印工作表

c# - 等待 Workbook.RefreshAll() (C#)

vba - 如何分隔列中的所有字符串并将每个子字符串粘贴到其他列中? (通过 VBA)

image - 将 Internet 中的图像添加到 VBA 图像控件中