我尝试使用VBA来确定活动工作簿是否有密码。 (它是检查以确保活动工作簿可以安全分发的工具的一部分)
到目前为止,我所尝试的并没有奏效:
ActiveWorkbook.Password
都会返回********
实际工作簿的密码实际上是 - 即使工作簿有
没有密码。
ActiveWorkbook.ProtectWindows
或ActiveWorkbook.ProtectStructure
即使活动工作簿有密码,也返回False。
非常感谢任何帮助。
答案 0 :(得分:3)
工作簿对象具有' HasPassword'您可以使用的财产:
Public Sub TestIt()
If ActiveWorkbook.HasPassword Then
MsgBox "Password Protected"
Else
MsgBox "Not Password Protected"
End If
End Sub
答案 1 :(得分:0)
您确定工作簿有保护吗?我创建了这个基本的UDF来测试保护:
Function IsWorkbookProtected(wb As Workbook, nType As Integer) As Boolean
IsWorkbookProtected = False
If nType = 1 Then 'Test for protected structure
IsWorkbookProtected = CBool(wb.ProtectStructure)
Else ' Test for protected windows
IsWorkbookProtected = CBool(wb.ProtectWindows)
End If
End Function
当我运行此程序时,它运行正常:
Sub TestFunction()
MsgBox (IsWorkbookProtected(ActiveWorkbook, 2))
End Sub
答案 2 :(得分:0)
此代码将测试保护并让您知道受保护的内容(使用或不使用密码):
Public Sub TestPassword()
Dim wrkBk As Workbook
Dim wrkSht As Worksheet
Set wrkBk = ActiveWorkbook
With wrkBk
If .ProtectStructure Or .ProtectWindows Then
MsgBox "Workbook protection"
End If
End With
For Each wrkSht In wrkBk.Worksheets
If wrkSht.ProtectContents Then
MsgBox wrkSht.Name & " protected."
End If
Next wrkSht
End Sub
答案 3 :(得分:0)
一旦测试了保护,您可以尝试取消保护工作簿而不提供密码。如果工作簿受密码保护,则会失败。
ActiveWorkbook.Unprotect Password:=""
然后你可以处理错误并从那里拿走它。