Resolvido
Fiz desta forma:
O Banco BackEnd fica em rede protegido por senha.
O Banco FrontEnd fica instalado em máquinas dos usuários, com tabelas vinculadas ao Back e com senha de acesso que à princípio o usuário deveria conhecer para poder usar.
Para não fornecer a senha ao usuário criei um terceiro Banco que acessa ao Front, este com senha fornecida ao usuário, o qual chamei de “Abrir sistema”.
O Banco Abrir Sistema é composto por:
Uma Macro autoexec que chama a função Libera.
Uma função Libera que envia comando com senha para abertura do Banco Front.
Em caso de erro, por qualquer manipulação pelo usuário no endereço do Front, este fecha e envia mensagem para acionamento do administrador.
Caso não tenha erro, o Front abre com os acessos vinculados ao Back e o “Abrir Sistema” fecha automaticamente.
Desta forma o Front na máquina do usuário estará protegido porque este não sabe sua senha.
Sem o acesso ao Front e também como o Back é protegido por senha, toda a estruturação do sistema e dados, estará protegida contra manipulações indesejadas.
O banco “Abrir Sistema”, não permite o uso da tecla “Shift+Enter” e mesmo sabendo a senha de entrada, o usuário não poderá copiar o código por meio de outro banco paralelo porque os códigos VBA estão protegidos também por senha inserida em “Ferramentas; Propriedades database; Proteção com bloqueio do projeto para exibição”. Este mesmo tipo de bloqueio foi feito no Front e no Back.
Seguem os códigos do banco Abrir Sistema
Módulo AbrirMenu - Função Libera
Function Libera()
Const DB_Boolean As Long = 1 'DESABALITA SHIFT+ENTER
ChangeProperty "AllowBypassKey", DB_Boolean, False 'DESABALITA SHIFT+ENTER
Dim Pass As Variant
Static objaccess As Access.Application
Dim db As DAO.Database
Pass = "SENHA DO MEU FRONT"
Dim strDbName As String
strDbName = "C:\ENDEREÇO DO MEU BANCO.accdb"
Set objaccess = New Access.Application
'On Error GoTo Sai 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO – SUGIRO FAZER UMA CÓPIA DESTE ANTES DE HABILITAR A SAÍDA EM CASO DE ERRO, POIS A TECLA SHIF+ENTER TAMBÉM ESTARÁ BLOQUEADA
Set db = objaccess.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=" & Pass)
objaccess.OpenCurrentDatabase filepath:=strDbName
objaccess.Visible = True
'Retornasai: 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
DoCmd.Quit 'FECHA O "ABRIR SISTEMA"
'Exit Sub 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
'Sai: 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
' MsgBox "OCORREU ALGUM ERRO. PROCURE O ADMINISTRADOR DO SISTEMA!" 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
'Resume Retornasai 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
End Function
'-------------------------------------------------------------------
Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
Dim dbs As Object, prp As Variant
Const conPropNotFoundError = 3270
Set dbs = CurrentDb
On Error GoTo Change_Err
dbs.Properties(strPropName) = varPropValue
ChangeProperty = True
Change_Bye:
Exit Function
Change_Err:
If Err = conPropNotFoundError Then ' Propriedade não encontrada.
Set prp = dbs.CreateProperty(strPropName, _
varPropType, varPropValue)
dbs.Properties.Append prp
Resume Next
Else
' Erro desconhecido.
ChangeProperty = False
Resume Change_Bye
End If
End Function