Вот функция, которая возвращает TRUE, если активный проект VBA защищен паролем.
Function ProtectedVBProject() As Boolean
' Returns TRUE if the VBA of the project is password protected.
Dim VBC As Integer
VBC = -1
On Error Resume Next
VBC = Application.VBE.VBProjects(1).VBComponents.Count ' Project count may be Base 1
On Error GoTo 0
If VBC = -1 Then
ProtectedVBProject = True
Else
ProtectedVBProject = False
End If
End Function
Вот пример того, как вызывать эту функцию:
' Stop if the VBA is protected with a password.
If ProtectedVBProject Then
MsgBox "It appears that the source code is password protected. Please open" _
& " the Visual Basic editor and enter the VBA password for the active database." _
, vbExclamation, "Object Locked!"
Exit Sub
End If
Еслинадстройка будет использоваться только мной или другими разработчиками, и код не скомпилирован в .mde или .accde, этот следующий пример дает пользователю возможность ввести пароль на месте, а затем продолжить.Мне, вероятно, не нужно говорить вам, что использование STOP
в опубликованном коде, как правило, является плохой практикой.
' Stop if the VBA is protected with a password and ask if the user wants to unlock it.
If ProtectedVBProject Then
Dim strMsg as String
strMsg = "It appears that the source code is password protected." _
& vbCrLf & vbCrLf & "Do you want to enter the VBA password now?"
Select Case MsgBox(strMsg, vbYesNo Or vbExclamation Or vbDefaultButton1, "Object Locked")
Case vbYes
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
'=-=-=
'=-=-= ENTER THE VBA PASSWORD FOR THE ACTIVE DATABASE
'=-=-= THEN PRESS F5 TO RESUME THE CODE EXECUTION
'=-=-=
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Stop ' Press F5 to continue. Do not remove this line.
Case vbNo
Exit Sub
End Select
End If