bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Macro de Segurança e o CurrentProject.isTrusted

Macro de Segurança e o CurrentProject.isTrusted

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito, através do Paypal. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

Códigos do Visual Basic for Applications (VBA) e de alguns comandos de Macros, vêm bloqueados por padrão.  A liberação desses recursos fica a critério do usuário, através de um aviso de segurança, quando se carrega o aplicativo. 

Dependendo do tipo de configuração do programa,  poderá receber formatos de aviso diferentes.  Um deles é o que você vê abaixo (modo runtime):

Usando Access

Ao clicar em Abrir, o usuário estará autorizando o Banco de Dados a utilizar-se do VBA e das Macros que estão bloqueadas.

Toda vez que se carregar o aplicativo, a mensagem de advertência se abrirá para que o usuário,  novamente, autorize a abertura ou não.

O outro tipo de formato é esse abaixo:

Usando Access

 

Clicando no botão Opções..., do aviso de segurança é aberta a tela Alerta de Segurança, que permite habilitar os recursos bloqueados.

No Tutorial Configurando Macro de Segurança foi explicado, em detalhes, como configurar um Banco de Dados, de modo que ele se torne confiável e esse aviso deixe de existir, mas ficou de fora do tutorial uma outra alternativa de configuração "oportunista" e que irei explicar aqui.

Veja, é possível detectar, através da nova propriedade IsTrusted do objeto CurrentProject, se o usuário permitiu a abertura do banco de dados com os recursos de Macro e VBA habilitados.   True(-1), significa que foram habilitados e false(0) de que não foram.   Se habilitados, pode-se, então, executar uma função, através do VBA, que configure o aplicativo para o modo confiável, não permitindo mais esse bloqueio incômodo.

Vamos precisar:

- de uma função que altere as configurações de segurança do aplicativo, no registro do Windows;
- da Macro AutoExec para detectar, na inicialização do aplicativo, se a segurança de macro está ou não habilitada.

Abra o módulo global e copie as funções abaixo:

Option Compare Database
Option Explicit

Dim CaminhoLoc As String
'--------------------------------------------------------------------------
Public Function fncConfigMacro()
Dim reg As Object
On Error Resume Next
'------------------------------------------------------------
'Se encontrar uma das configurações já feitas, abortar função.
'------------------------------------------------------------
If fncJaConfigurado Then Exit Function
'------------------------------------------------------------

Set reg = CreateObject("wscript.shell")
'------------------------------------------------------------
'Configurando como confiável a pasta aonde se encontra seu BD
'------------------------------------------------------------
reg.RegWrite CaminhoLoc & "AllowSubfolders", 1, "REG_DWORD"
reg.RegWrite CaminhoLoc & "Date", Date, "REG_SZ"
reg.RegWrite CaminhoLoc & "Description", "Projeto exemplo", "REG_SZ"
reg.RegWrite CaminhoLoc & "Path", fncLocalBd, "REG_SZ"

Set reg = Nothing
End Function

'--------------------------------------------------------------------------
Public Function fncLocalBd() As String
On Error Resume Next
'-----------------------------------------------
'Localiza a pasta do Banco de Dados em execução
'-----------------------------------------------
fncLocalBd = Application.CurrentProject.Path
End Function

'--------------------------------------------------------------------------
Private Function fncJaConfigurado() As Boolean
Dim reg As Object
Dim CaminhoGravado As String

Set reg = CreateObject("wscript.shell")
fncJaConfigurado = False
On Error Resume Next
 
'---------------------------------------
'Captura o caminho da pasta no registro
'---------------------------------------
CaminhoGravado = reg.RegRead(CaminhoLoc & "\path")
'------------------------------------------------------------
'Compara o caminho da pasta do registro com o caminho atual
'------------------------------------------------------------
If CaminhoGravado = fncLocalBd Then fncJaConfigurado = True
Set reg = Nothing
End Function
 
'--------------------------------------------------------------------------
Private Function fncCaminhoLoc() As String
Dim caminho As String
Dim nomeBd As String

'-------------------------------------------------------
'Captura o nome do seu aplicativo para cria o nome da 
'pasta no trusted locations
'-------------------------------------------------------
nomeBd = CurrentProject.Name
nomeBd = Mid(nomeBd, 1, InStr(nomeBd, ".accd") - 1)

'--------------------------------------------------------------
'Monta caminho do registro em função da verão atual do Access 
'e do nome do seu aplicativo
'--------------------------------------------------------------
caminho = Replace("HKEY_CURRENT_USER\Software\Microsoft\Office _
\[v]\Access\Security\Trusted Locations\[bd]\", "[v]", Application.Version)
 
caminho = Replace(caminho, "[bd]", nomeBd)

'------------------------------------------
'Passa o caminho do registro para a função
'------------------------------------------
fncCaminhoLoc = caminho
End Function

Crie uma macro de nome AutoExec e configure conforme a imagem:

Usando Access

Observe a linha CurrentProject.isTrusted=-1 na coluna de condição, ou seja, só executa a função se for detectado pela propriedade IsTrusted,  que o usuário autorizou o uso do VBA.

Este código foi projetado para atender as versões do Access 2007, 2010 e 2013.

Download

Sucesso!


 

Artigos Relacionados
 
Macro de Segurança
 

 


45 comentários

Avelino Sampaio   25/05/2018 04:04:23

Valdir,

veja neste meu artigo:

http://www.usandoaccess.com.br/dicas/armazenar-valores-lista-propriedades.asp?id=1

Ou pode utilizar a extensão ACCDR com o OPEN

http://www.usandoaccess.com.br/tutoriais/seguranca-microsoft-access-usando-o-open.asp?id=1#inicio

Bom estudo!

Valdir   24/05/2018 16:33:48

Eu irei usar as macros, mas como bloquear o shift para o usuário na inicialização.?

Caio Fábio   21/09/2016 08:43:27

Bom dia Avelino,

A minha pergunta está associada a pergunta João Eduardo, em 11/02/2011 as 09:55:03.

Nessa parte dá erro e pode para compilar, poderia me ajudar?

caminho = Replace("HKEY_CURRENT_USER\Software\Microsoft\Office _
\[v]\Access\Security\Trusted Locations\[bd]\", "[v]", Application.Version)


Uso Access 2010.

MS ACCESS 2016 E RUNTIME 2016   02/06/2016 14:25:13

Boa tarde Avelino o Access 2016 não reconhece a função =fncConfigMacro()

Jose Carlos   06/04/2016 10:20:30

bom dia amigo no meu banco de dados esta dando este aviso
Aviso de segurança certo itens do contetudo do banco de dados foram desabilitados, noão consigo abrir o formulario, pode me ajudar, obrigado,um abraço

Nilson   02/03/2016 09:22:29

Bom dia,

Em caso de utilizar RUNTIME 2010... Como posso fazer funcionar meu sistema que estou criando? Utilizai o IsTrusted, mas ele me retorna que:

"Você tentou executar uma macro ou utilizou o objeto DoCmd no VisualBasic... etc etc..."

Se eu rodo o Maestro_v5 ele funciona normal no RUNTIME...
Outra coisa que noteié: Se deixar o caminho do be configurado (em access completo libero a habilitação do macro e defino um caminho e reproduz o mesmo caminho no PC com RUNTIME) ai o meu sistema abre normalmente...

Eu uso os códigos do Maestro para criar a conexão e vinculo com o caminho be...

O que poderia ocasionar esse erro no meu sistema sendo que é o mesmo código que funciona com o Maestro?

Grato,

Maria Isabel Costa   21/10/2015 10:48:00

Apliquei o seu código na minha BD e funcionou corretamente com o sistema operativo Windows 10, no entanto quando abro os formulários através de botões, uns consigo abrir bem noutros dá um erro e todas as tabelas, consultas desaparecem. Fecho a BD e volto a entrar e nesse formulário que deu erro já consigo entrar, mas ao abrir outros volta a acontecer o mesmo. Não sei se terá a ver com as macros de segurança, não consigo compreender o motivo, porque noutros pcs o programa funciona corretamente. Será que me pode dar uma ajuda. Obrigada

Gustavo   01/09/2015 14:06:35

Obrigado pelas explicações, já o acompanho uns 3 anos com os seus projetos, inclusive já comprei o seu monta ribbons que por sinal é de grande qualidade me ajuda em meus projetos até hoje.

Avelino Sampaio   25/04/2015 06:50:12

Sidnei,

sim, funciona nas três versões (2007, 2010 e 2013).

Sucesso!

Sidinei da Rosa   24/04/2015 10:00:54

Otimo funcionu perfeitamnte.

Só uma pergunta funciona para todas as versoes do access?
até 2013?

Guto Ferrari   18/08/2014 17:26:32

Matei o problema e acredito que seja o mesmo problema do Filipe, que postou acima de mim.

Uma das linhas do código extrai o caminho do BD, excluíndo o nome do arquivo com extensão .accdb.
O BD que eu utilizei o código era extensão .mdb. Bastou alterar a extensão e o código funcionou perfeitamente. Fica a Dica!

Abraços

Guto Ferrari   18/08/2014 17:22:18

Só para complementar: inseri um Caixa de Mensagem para ter certeza que o autoexec estava mesmo executando e está. Acho que é algo com o código.

Atenciosamente

Guto Ferrari   18/08/2014 17:16:54

Olá Avelino!
Parabéns pelo site! Excelente iniciativa que ajuda demais os desenvolvedores iniciantes!!!!

Copiei o autoexec e módulo, mas ele não faz nada no meu BD.
Porém quando eu o executo no seu arquivo de exemplo, roda perfeitamente.

O que pode estar havendo?

Filipe   06/05/2014 13:20:45

Ola Avelino,

não funciona tentei de tudo simplesmente parece que o código não existe.

Muito obrigado Avelino   02/07/2013 13:17:25

este site tem sido muito util pra mim, inclusive faço agradecimentos na tela splash do aplicativo citando diretamente a colaboração de Avelino Sampaio

Muito obrigado Avelino   02/07/2013 13:12:42

este site tem sido muito util pra mim, inclusive faço agradecimentos na tela splash do aplicativo citando diretamente a colaboração de Avelino Sampaio

Avelino Sampaio   05/06/2013 08:05:11

Erick,

vá na seção "DICAS" aqui do site e leia o artigo "Desabilitando o Painel de Navegação"

Sucesso!

Erick Felix da Silva   04/06/2013 08:30:42

Olá amigo. Muito obrigado pela macro, vai quebrar um galho de muita gente ainda! Só uma pergunta, no access 2010 existe a opção "Ocultar painel de navegação" que oculta esse painel aonde aparece a macro. É necessário que o painel não esteja oculto para que a macro autoExec funcione? Agradeço desde já, abraço!

Andre   13/03/2013 07:13:34

Oi Avelino,
Por um acaso você já se deparou com um "Erro de tempo de execução '57121': Erro de definição de aplicativo ou de definição de objeto"? Bom estou me deparando com esse problema, mas o mais estranho é que ele não aparece logo da 1ª vez que abro o arquivo. Das primeiras vezes o arquivo abre normalmente e, de repente, o erro acontece e as macros e projeto em VB não funcionam mais. O arquivo abre, mas como se fosse uma Pasta de Trabalho do Excel normal e não a Habilitada para Macros como deveria ser.
Se puder me esclarecer algo sobre esta situação agradeço.

Andre   05/03/2013 00:32:22

Olá Avelino. Já consegui uma solução bem parecida com a sua. Muito obrigado assim mesmo.

Avelino Sampaio   02/03/2013 07:31:41

Andre,

Não tenho conhecimento sobre como funciona o VBA para o Excel.

Por gentileza, visite o site do meu amigo Felipe Costa, que irá conseguir esta informação.

Copie e cole o endereço abaixo no seu navegador.

http://www.ambienteoffice.com.br

Sucesso!

Andre   01/03/2013 19:02:57

Muito bom seu módulo! Ele só serve para aplicações no Access ou serveria também para aplicações no Excel?

Andre   01/03/2013 18:57:45

Muito bom seu módulo! Ele só serve para aplicações no Access ou serveria também para aplicações no Excel?

Almir   08/11/2012 07:55:42

Avelino valeu por mais essa ajuda...

Avelino Sampaio   03/09/2012 13:18:15

José,

Observe a orientação que passei para o amigo IVAN. Se não funcionar com o acrescimo no resgistro do AllowNetworkLocations , vc deverá deslocar seu front-end para a máquina local. Cada máquina deverá ter o seu front-end.

Sucesso!

José Donizeth Rodrigues   03/09/2012 13:05:25

O front-end do meu BD está em rede, na máquina servidora.

José Donizeth Rodrigues   03/09/2012 12:37:19

Macro de segurança

Uso o access 2010, sendo que a aplicação roda em rede e mesmo com a adpatação do exemplo Tuto5 para minha aplicação, o access continua solicitando autorização de segurança de macro, toda vez que algum usuário abre a aplicação em suas máquinas. Só esclarecendo que minha aplicação é distribuida via access runtime, uma vez que os usuários não possuem access instalado em suas máquinas.

José Donizeth Rodrigues   03/09/2012 12:16:35

Uso o access 2010, sendo que a aplicação roda em rede e mesmo com a adpatação do exemplo para minha aplicação, o access continua solicitando autorização de segurança de macro, toda vez que algum usuário abre a aplicação em suas máquinas.

Ivair Martins   26/08/2012 10:19:47

Bom dia Avelino, Tudo bem

Então no arquivo do exemplo que eu baixei já tem na 'Função fncConfigMacro' essa linha abaixo:
'libera pasta de rede
'-----------------------
reg.RegWrite fncCaminhoLoc(True) & "AllowNetworkLocations", 1, "REG_DWORD"
'-----------------------
Não seria isso?? Não sei o que estou fazendo de errado, estou testando esse exemplo na Rede para depois usar no meu programa.
Obs: Não entendi bem "criar uma variavel" vc poderia me explicar por favor e dar um exemplo é a primeira vez que eu vou colocar um programa em rede.

Obrigado...

Avelino Sampaio   25/08/2012 14:52:58

Ivan,

como o local é na rede, talvez tenha que ativar esta permissão.

Crie um variável para receber o caminho:

Exemplo para o Access 2007

CaminhoTrust = "HKEY_CURRENT_USER\Software\Microsoft\Office \12.0\Access\Security\Trusted Locations

Acrescente a gravação da chave (AllowNetworkLocations), que permite a liberação pela rede.

reg.RegWrite CaminhoTrust & "AllowNetworkLocations", 1, "REG_DWORD"


Sucesso!

Ivair Martins   25/08/2012 13:18:26

Boa tarde Amigos, eu baixei o exemplo anexado pelo Avelino e coloquei ele em rede, na maquina do servidor funciona perfeitamente mas na maquina do cliente aparece a Msg de Aviso aí eu clico em habitar ele habilita normalmente pq eu clico no Botao do Form aparece a msg 'O VBA esta liberado', mas quando eu fecho o arquivo e depois vou reabri-lo a Msg aparece novamente, já olhei no Editor de registro da Maquina Cliente e na pasta Trusted Localtions está o arquivo gravado e no nome do Caminho (Path) está ( \\198.162.0.1\MinhaPasta ) onde seria o caminho no meu Servidor, onde será que eu estou errando?
Obrigado...

OLDRI   08/05/2012 10:24:00

Avelino, existiria uma forma de aplicar sua função no Access 2003?
Obrigado

Avelino Sampaio   09/01/2012 12:36:54

Marcus Porfirio,

vc está correto. Na primeira abertura o usuário terá que autorizar se a letra for diferente ou se for em um novo micro.

Sucesso!


Marcus Porfirio   09/01/2012 12:16:29

Avelino tenho uma pergunta a fazer (gostaria que vc me falasse se estou correto),
Se o meu banco estiver em um pendrive e se eu utilizar esta solução pode ser que ela não funcione sempre, pois é possível que em um micro o caminho do banco seja diferente de outro (nem sempre a letra do drive do pendrive é o mesmo, uma hora é f: em outro pode ser outra letra) e ainda, em cada micro que eu abrir o banco primeiramente terei que autorizar pelo menos na primeira abertura o uso de vba, é isso?

Avelino Sampaio   06/12/2011 08:20:41

Eder,

obrigado pelo feedback e sucesso!


Eder Castro   05/12/2011 16:33:13

Avelino parabens sem palavras pelo site, vc e o Valdino estão de parabens, depois q conheci o site minhas aplicações nunca mais foram as mesmas melhoram muito graças ao conhecimento compartilhado de vcs, obrigado mesmo.

Avelino Sampaio   21/11/2011 07:18:16

Fabricio,

lembrando, que ao rodar pela primeira vez, o Access irá abrir a tela de aviso. Da segunda vez em diante estará livre do aviso.

Vá na seção "contato" aqui do site e esclareça melhor a situação.

Grato

Fabricio   20/11/2011 19:51:31

Eu abri o exemplo, mas mesmo assim aparece "Certos itens do conteúdo do banco de dados foram desabilitados", o que eu faço ?

Avelino Sampaio   27/10/2011 17:47:43

Rogerio,

só tem que copiar a macro e o módulo.

Sucesso!

Rogerio   27/10/2011 08:38:18

Primeiramente parabens pelo exemplo.

Baixei seu exemplo e vi que tem um formulário inicial que é aberto automaticamente.

A minha duvida é o seguinte: esse formulário é essencial para o funcionamento ou é apenas para ilustração/explicação, ou seja se eu quiser usar em meus projetos só tenho que copiar o macro e o modulo é isso?

Avelino Sampaio   14/02/2011 08:12:03

João,

Vá na seção "Contato" do site e me passe mais detalhes.

no aguardo

João Eduardo   11/02/2011 09:55:03

Ola Avelino
otimo o seu modulo mas deu erro de sintaxe,abre uma caixa pedindo para verificar o codigo e recompilar .Meu Ofice é 2007 .O que devo Fazer?

Avelino Sampaio   02/02/2011 14:27:16

Juan,

Na macro AutoExec, insira primeiro o código do istruted e na linha seguinte inclui o de Checar Vínculo

Sucesso

Juan   02/02/2011 14:04:46

Olá Avelino,
Muito Bom, uma pergunta, já uso sua AutoExc para Checar vínculo, como posso fazer para incluir?

Grato.

paulo gesse da costa   28/05/2010 22:30:01

show de bola!


Envie seu comentário: