Configurando Macro de Segurança
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito, através do Paypal.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Muitos dos programas do Microsoft Office utilizam o termo Macro para se referir ao código VBA. Isto confunde o usuário do Access, uma vez que, no Access, o termo "macro" refere-se a uma coleção denominada de ações macro que pode agrupar usando o Construtor de Macros. As ações macro do Access representam apenas um subconjunto dos programas disponíveis no VBA. Na verdade esse termo "Macro de Segurança", para os utilizadores do Access deveria se chamar "Bloqueio do VBA".
Você sabia que o Access pode ser usado como um vírus? Isso mesmo, um programador mau intencionado pode danificar seu Windows, Office e por aí vai. A Microsoft, desde a versão do Access 2003, decidiu, então, que a execução de códigos pelo VBA estaria bloqueada por padrão e que a liberação do mesmo ficaria a critério do usuário. Aplicativos que se utilizam apenas de comandos de macro permitidos não sofrem qualquer restrições de uso, pois tais comandos, apesar de fornecerem grande poder de programação, são bem limitados.
Se a configuração padrão da Macro de segurança do seu Access não for alterada, todos os seus aplicativos e/ou de terceiros, emitirão um aviso como no exemplo abaixo.
Observe o aviso de segurança acima do formulário e veja que no
teste, só o botão que contém comando de macro é que funcionou.
Clicando no botão <Opções...> do aviso de segurança é aberta a seguinte tela:
Marcando "Habilitar este conteúdo" o Access permitirá o uso do VBA., mas todas às vezes em que reabrir o aplicativo terá que habilitar o conteúdo de novo.
E se quisermos manter o bloqueio sem que apareça o aviso de segurança?
É só fazer o seguinte:
Clique em "Abrir a central de confiabilidade" (figura acima) , selecione o menu "Barra de Mensagens" e habilite "Nunca mostrar informações sobre o conteúdo bloqueado" (veja a figura abaixo).
Já fui surpreendido, nos fóruns, com a seguinte pergunta: Por
que o Access está apresentando problema de não executar código?
Agora você é capaz de responder essa questão, não é? Você já sabe
que O VBA está bloqueado e sem aviso.
Bem, nós somos programadores e desejamos utilizar o VBA livremente, certo? Existem duas maneiras de fazer isso: uma é bem radical que é a de desabilitar totalmente esta segurança (é a configuração que eu uso na minha máquina) e a outra é a de "avisar" ao Access de que todos os aplicativos dentro de uma determinada pasta, são confiáveis (é a configuração que eu uso na máquina do cliente).
Então, como desabilitar totalmente a segurança?
Você pode abrir a Central de Confiabilidade pela tela já mostrada acima ou através do Botão do Office > Opções do Access > Central de Confiabilidade > Configurações da central de confiabilidade.
Selecione o menu "Configurações de macros" e marque "habilitar todas as macros" (figura abaixo).
E se optar por criar um local confiável em vez de desabilitar totalmente a segurança, como foi feito acima?
Abra novamente a central de confiabilidade e selecione o menu "Locais Confiáveis" , conforme figura abaixo:
Clique em "Adicionar Novo Local"
Selecione a sua pasta confiável através do "Procurar" e marque
também que as subpastas são confiáveis.
No exemplo da figura acima, tornei a pasta "Meuprojeto" como
confiável e ainda permiti que esta seja confiável em rede.
Carreguei meu Banco de Dados de dentro da pasta confiável e pude rodar o código VBA livremente (figura abaixo).
Atenção! As configurações acima são válidas apenas para sua máquina
e seu Login. Caso tenha outros usuários na máquina terá que
configurar para cada um deles. Existe uma maneira de
configurar, de uma única vez, um local confiável, que seja válido
para todos os usuários, mas isso só funciona com o Windows XP.
Quer dizer que se você projetar um Banco de Dados na sua máquina e for rodar na máquina do cliente, terá que configurar a Macro de Segurança na máquina dele? Isso mesmo.
se você for distribuir seu Banco de Dados, por exemplo, pela internet, como resolver essa questão sem a sua intervenção e/ou a do usuário?
Usando um programa de instalação, como por exemplo o Innosetup/Istool, você consegue configurar a Macro de Segurança do cliente através do registro do Windows. Opte em configurar a pasta de seu aplicativo como local confiável em vez de desabilitar por completo a segurança do Access do cliente. ok?
Veja, nas figuras abaixo, as pastas e as chaves de configuração do Access no registro do Windows.
Basta alterar a chave VBAWarnings, da pasta Security, para o valor 1
que a macro de segurança estará desabilitada.
Vejamos a configuração da pasta confiável na figura abaixo:
Então, quando configuramos a pasta confiável, o Access escreve no
registro do Windows tudo isso aí. E é o que deverá ser
feito quando for utilizado um programa instalador.
Observe o detalhe no rodapé - HKEY_CURRENT_USER - isso significa que foi configurado para o usuário logado, ou seja, a alteração no Access é feita para cada usuário.
Se quisermos que a configuração de local confiável seja válida para todos os usuários no Windows XP, devemos deslocar as pastas e chaves envolvidas para HKEY_LOCAL_MACHINE (Figura abaixo).
Terá que criar à mão as pastas: Security, Trusted Locations e uma
pasta dentro de Trusted Locations de nome desejado (no meu exemplo
está como Location7). Aí, sim, dentro desta pasta deverá criar
todas as chaves ( AllowSubfolders, Date, Description, Path ).
Se ficar intimidado em mexer no registro do Windows você pode copiar
o script abaixo para o "Bloco de Notas" e salvá-lo com a extensão
VBS ( exemplo : ConfigMacro.vbs). Basta executar o arquivo
criado que ele montará o registro para você.
ATENÇÃO , O SCRIPT FUNCIONARÁ APENAS NO WINDOWS XP
'----------------------------------------------------------------------------
'Este script irá alterar o registro do Windows XP, com o propósito de tornar
'uma pasta confiável , para todos os usuários.
'----------------------------------------------------------------------------
Dim reg
Dim local
Set reg = WScript.CreateObject("wscript.shell")
local = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Access\Security\"
local = local & "Trusted Locations\Location7\"
'------------------------------ 'Configurando pasta confiável
'------------------------------
'Seta subpastas como confiável reg.RegWrite local & "AllowSubfolders", 1, "REG_DWORD"
'data e hora da configuração reg.RegWrite local & "Date","18/04/2009 15:00","REG_SZ"
'Descrição sobre a pasta reg.RegWrite local & "Description","Meus projetos de 2009","REG_SZ"
'Informa local e nome da sua pasta confiável
'ATENÇÃO - configure o nome da sua pasta reg.RegWrite local & "Path","C:\NomeDaSuaPasta","REG_SZ" msgbox "Local confiável configurado..."
Na figura abaixo, mostra as linhas criadas no programa instalador (isTool), que alteram o registro do Windows do usuário, com o propósito de tornar a pasta, que contém o projeto, confiável, possibilitando assim, rodar seu Banco de Dados livremente. Todos os detalhes de como usar esta ferramenta de instalação serão dadas na seção Vídeo Aulas deste site.
Ainda existe a possibilidade de se criar uma assinatura digital, que garante a confiabilidade do seu BD. Isso é um tema confuso que não irei abordar, pois não consegui identificar vantagens nisso, que além de ser paga, tem prazo de validade. Se tiver interesse em saber sobre o assunto, veja aqui no site da Microsoft.
Bom estudo!
48 comentários Avelino Sampaio 20/08/2022 06:34:55 Herbert, vc está no artigo certo. Qual é a versão do seu Office ? É só entrar nas Opções do Access > Central de confiabilidade. Sucesso! HERBERT RAIMUNDO RABELO 19/08/2022 22:54:58 Estou tentando usar o Maestro mas esta dando a seguinte mensagem: "A macro de segurança esta ativa", e pede pra entrar no site pra ver como desativar ou criar um local seguro. Olhei no site não encontrei nada, como faço Gilberto Franguelli 03/07/2022 22:07:39 Ola Avelino, tudo bem? Garimpando pela net encontrei essa linha para o Excel, será que não seria válida para o Access? Application.AutomationSecurity = msoAutomationSecurityLow Um grande abraço e parabéns por seus tutoriais. Moacir 03/07/2022 07:12:27 Excelente, resolveu meu problema de central de confiabilidade. Valdecir 12/05/2022 11:59:33 Baixei o Maestro e estou tentando abrir mas esta dando a seguinte mensagem: "A macro de segurança esta ativa", e pede pra entrar no site pra ver como desativar ou criar um local seguro. Olhei no site mas não vi nada, acho que estou meio cego kkk o que devo fazer pra funcionar. Estou usando windows7 32bits Juan 27/02/2022 09:03:12 Estou usando o Access 2002. Criei alguns programas no windows 7 e os instalei em um notebook com o windows vista. Funcionou tudo bem durante 2 anos. Recentemente, no notebook, mudei o vista pelo 7. Surpresa: a maior parte das macros deixaram de funcionar. Acontece que o access 2002 não tem "Central de Confiabilidade". Será que tem alguma solução?. Nota: não sou profissional de informática, só amador; faço os programas para uso exclusivo. Aline Mendes 14/12/2021 09:29:23 Como criar um codigo com data para bloquear o access? Sidney de Lima 19/11/2021 21:29:38 usando função "Definir Valor" no access 2007/2010, aparece o Erro 2950. Já defini o local do arquivo como confiavel, mas o erro persiste. Alguém pode me dar uma help? Grato (sdl0072@hotmail.com) Sidney de Lima 19/11/2021 21:28:25 usando função "Definir Valor" no access 2007/2010, aparece o Erro 2950. Já defini o local do arquivo como confiavel, mas o erro persiste. Alguém pode me dar uma help? Grato ALDONAY BELMOOK 29/10/2021 20:42:06 Parabéns Avelino, tenho acompanhado suas apresentações e sei que é de grande valia para todos. ANDRÉ RICARDO 03/10/2021 09:54:37 Bom dia estou com uma dificuldade para abrir um programa que se chama por nome GIA DA SECRETARIA DA FAZENDA ele da seguinte menssagen ScitDB.mdb não pode ser aberto ! ao pesquisar algo referente assunto estou chegando a conclusão que por algum motivo não abre alguem pode me ajudar ? Alex 07/08/2021 14:07:22 TENHO UM BANCO DE DADOS DA EMPRESA E PRECISO BUSCAR DENTRO INFORMAÇÕES SEQUENCIAS DE DIVERSOS CLIENTES. TIPOS EMAILS DE CLIENTES E CPFS. Walteir Freire 20/07/2021 17:38:11 Vou testar, para ver se dá certol Avelino Sampaio 26/04/2021 06:19:22 Flavia, Acesse o tutorial "controle personalizado" e assista a vÃdeo-aula Bom estudo! Flavia Almeida 25/04/2021 16:03:31 Boa Tarde Avelino, Preciso criar um controle de acesso como o que vc demonstrou na video aula. Gostaria de saber se no OPEN que vc falar e/ou no MontarRibbon consigo esse passo-a-passo com todas as instruções. Se for o caso, como posso adquiri-los? Att. Avelino Sampaio 19/04/2021 06:45:07 Carlos, não sei nada sobre Excel. Pelo Access vc tem que deletar os arquivos da pasta para depois então deletar a pasta. Não sei quanto a questão da segurança da pasta. Copie e cole no seu navegador, o enderço abaixo, que tem um código exemplo. http://brzexceldeveloper.blogspot.com.br/2011/06/vba-deletando-arquivos-deletando-pastas.html Bom estudo! CARLOS ROBERTO OLIVEIRA COSTA 18/04/2021 19:01:56 sub pastas de 1 planilha excel, desejo renomealas ou excluir como proceder encontrase protegida. lembro que o conteudo nao encontra-se protegido TorresForte 28/03/2021 10:14:39 Consegui um metodo pra criar a pasta segura... atravez de arquivos *.reg Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access\Security\Trusted Locations\Location8] "AllowSubfolders"=dword:00000001 "Date"="28/03/2013 15:00" "Description"="Meus projetos de 2013" "Path"="C:\\ProjetoTeste" essa e a extrutura do arquivo... obtive ele ao exportar uma ramificação do proprio registro... e só alterar os falores e clicar duas vezes no arquivos que e criado a chave automaticamente.... acho que agora funciona em qualquer SO (winXP, win7) (eu só testei no windows XP) Otima dica... abraços.... Avelino Sampaio 09/03/2021 17:16:43 José, vá em "Artigos relacionados" deste tutorial e clique no link sobre "CurrentProject.isTrusted" Bom estudo! José Ademar 09/03/2021 14:03:02 Avelino. peço sua ajuda, vc saber habilitar macro pra o Acess quando o BD está no modo ACCDE, sempre que crio com essa extensão mas macros não funciona, ou parte delas... obrigado. GEANE 20/02/2021 19:08:59 talvez eu nao soube exprimir bem o meu problema...quiz dizer que este programinha feito em access.. nao funciona no windows vista e 7...antes sim no windows xp.. quando vou instalar. ele me diz a mensagem precisa do service pack 6 do windows nt.. mas como se eu tou com o pc novo..eu tenho windows vista e windows 7,,entende?tem como fazer funcionar este programa ? Avelino Sampaio 20/02/2021 08:06:24 Geane, Um erro bem incomum! Atualize o seu Office 2007 com o pacote sp3. Segue link da Microsoft para baixar o pacote de atualização: http://www.microsoft.com/downloads/details.aspx?FamilyID=0e40bbe7-1422-40ea-912d-2a29d709f93f&DisplayLang=pt-br Sucesso! geane 19/02/2021 17:45:09 Ah!o meu microsoft office 2007, geane 19/02/2021 17:44:39 ola a todos... porfavor gostaria de uma informacao.. eu tenho um programa desenvolvido em access que no meu windows xp funciona perfeito,.mas gostaria que funcionasse tambem no windows 7 que eu tenho de fazer?diz q nao tenho windows nt service pack 6, porfavor preciso de ajuda. geanets@hotmail.com Evanor 08/01/2021 12:04:47 Pessoal. Eu converti um arquivo do mdb do access 97 para um access 2003. As funcionalidades dos formulários(macros) pararam de funcionar. Alguém sabe me diz o porque dos erros... Pepe 06/10/2020 18:06:30 Eu estou com um programa instalado no micro que dá acesso a um banco de dados feito no access e estou querendo passar esse programa com o banco de dados para um outro micro. Comecei copiando todos os arquivos .mds para o outro micro nas mesmas pastas e caminhos que estão no meu micro, até ai tudo bem, copiei também uns arquvios do BDEADMIN que faz parte do programa mais eu não sei pra que serve, depois peguei todos os registros que esse programa adicionou no Windows XP. Depois de fazer tudo isso, tentei executar o programa com o banco de dados no outro computador, o programa executou normalmente porém quando tentava acessar o banco de dados atraves de uma pesquisa pelo programa ele não efetuava o acesso ao banco de dados. Percebi que todo vez que eu inicia o programa aparecia um arquivo com o mesmo nome do banco de dado, o nome do banco de dados é cliente.mds e o nome do arquivo criado é cliente.ldb. E jutamente com esse arquivo .ldb tinha a seguinte mensagem: "Bloqueio de Registro do Microsoft Access. A pergunta é, como eu faço para passar o programa e o banco de dados para o outro micro inteiro e principalmente como eu faço para que ele execute normalmente como no meu micro ??? E como desbloquear esse registro ??? Avelino Sampaio 03/10/2020 08:21:18 Alan, E qual é a versão do Access no XP ? E a versão do Access no Windows 7 ? No aguardo Alan 30/09/2020 12:34:22 Amigo, boa tarde. Fiz um programa em Access no windows xp. Agora comprei um pc novo e o inclui na rede. Esse pc que chegou é windows 7 e esse programa em access não funciona. Abre, mas não funciona. Tem algo q eu possa fazer? Meu e-mail é vendas@placaimobiliaria.com.br Avelino Sampaio 28/09/2020 07:02:25 Helena, entre em contato pela seção contato do site e me forneça detalhes sobre as verões do windows e do Office de todas as máquinas envolvidas. Se vc usa o Office 2007 é obrigatório atualizar com o pacote Sp2 no aguardo HELENA ROMERO 26/09/2020 21:33:41 Oi Avelino, sempre leio seus tutoriais, eles me já me ajudaram bastante. Estou com um problema no banco de dados que fiz para a empresa que trabalho. Fiz o programa no meu notebook e copiei para a rede da empresa, inicialmente, começaram a aparecer erros, o 2950, quando clicava em um botao para abrir um Relatório. Agora vi, que isso está acontecendo também com os gráficos dinâmicos que criei, o pior é que não estou nem conseguindo criar um gráfico dinâmico, mesmo abrindo um BD novo, o Access trava e reinicia. Você sabe como me ajudar? Agradeço, Avelino Sampaio 18/09/2020 10:35:08 Luciano, vá no quadro "Artigos relacionados" aqui do artigo e clique no link "currentproject.istrusted". Lá vc terá um arquivo exemplo, de como desabilitar a macro de segurança, para o bd rodando em runtime. Bom estudo! Luciano Conti Kraemer 14/09/2020 11:40:25 Cara estou engatinhando no access.... e criei um BD no access 2007 (vista)... o usuário tem Office 2003 (não tem access - windows XP) .... utilizei o Run Time .... aparece o seguinte erro: A função que voce inseriu não pode ser utilizada nesta expressão. ------> Ação falhou: Parar todas as Macros. Numero do erro: 2950. Desculpe ocupar seu tempo, mas gostei muito do seu site e resolvi pedir uma ajuda.... o que pode estar acontecedo? Vc tem alguma sugestão? Já tentei as dicas acima mas não funcionaram.... Obrigado pela atenção. e-mail: luckraemer@gmail.com jhom 02/09/2020 15:09:56 boa tarde me ajudou muito mesmo. Estou iniciando no access 2007 vlw pela dica... Luiz Carlos 28/08/2020 12:43:26 Cara valeu pelo tutorial, parabéns, muito bom. Ainda não tinha visto desta forma. Forte Abraço. Att. Luiz Carlos Luizzlcs@hotmail.com MARCIO. 27/07/2020 11:20:11 Resoindendi a pergunta da Lucia, as macros servem para "dizer ao computador as tarefas que deverá executar em uma sequencia. desvantagens não existem. Liomar Souza 13/07/2020 13:04:12 Valeu, Avelino, muito didático! Avelino Sampaio 29/05/2020 08:40:15 Domingos e paulo, instalei o runtime com o pacote de atualização Sp2 é funcionou tudo direitnho. copie e cole o endereço abaixo no seu navegador para baixar o arquivo exemplo. http://www.usandoaccess.com.br/fa/testeMacro.zip Façam um teste e me retornem grato paulo gesse da costa 28/05/2020 21:32:12 Avelino: bastante proveitoso suas explicações de access. Elaborei o bd e, ao rodar em run-time, não abre. Estou esperando seu teste ai ... Avelino Sampaio 21/05/2020 14:45:35 Domingos, Amanhã eu vou instalar o run-time e entender a razão do problema. O pessoal tem reclamado bastante com isso. Vou tentar entender se há algum tipo de limitação. Grato Domingos Casarim 21/05/2020 10:52:53 Avelino, obrigado pela atenção. A mensagem inicial de segurança sumiu, OK. Entretanto, continuo com o problema de execução de macro (ERROR 2950). No Access Full, eu entro em opções do Access e habilito todas as macros. AÃ, funciona. Mas, no Run-Time não consigo habilitar as macros. Vc por acaso tem uma solução? Avelino Sampaio 21/05/2020 08:18:48 Olá Domingos Veja o artigo relacionado "CurrentProject.isTrusted". Tem um exemplo que vc pode testar no run-time Sucesso DOMINGOS CASARIM 20/05/2020 17:42:55 Caro Avelino, obrigado pelas dicas. Agora, como desbloquear VBA no Access Run-Time. STELLA MARIS 19/04/2020 21:09:26 Avelino, muito obrigada por essa ajuda, agora irei instalar o SP2 e vou torcer que meu BD fique 100% lucia 03/04/2020 15:01:03 ola, gostaria de saber quais as vantagens e desvantagens das macros no Access? Everton 25/03/2020 22:01:55 Abaixo um arquivo com extenção .vbs que serve para o windows xp e vista.... Dim reg Dim local Set reg = WScript.CreateObject("wscript.shell") local = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Excel\Security\" local = local & "Trusted Locations\Location99\" reg.RegWrite local & "AllowSubfolders", 1, "REG_DWORD" reg.RegWrite local & "Date","18/04/2009 15:00","REG_SZ" reg.RegWrite local & "Description","Super Fluxo CX","REG_SZ" reg.RegWrite local & "Path","C:\SuperFluxoCX","REG_SZ" local = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\" local = local & "Trusted Locations\Location99\" reg.RegWrite local & "AllowSubfolders", 1, "REG_DWORD" reg.RegWrite local & "Date","18/04/2009 15:00","REG_SZ" reg.RegWrite local & "Description","Super Fluxo CX","REG_SZ" reg.RegWrite local & "Path","C:\SuperFluxoCX","REG_SZ" Everton 25/03/2020 21:58:06 Segue abaixo o script que funcionou para o Windows Vista. Não foi testado com o controle de usuário, mas o registro esta gravando corretamente. Então fazendo um auto extrator com o winrar, vai funfar perfeitamente. '---------------------------------------------------------------------------- 'Este script irá alterar o registro do Windows XP, com o propósito de tornar 'uma pasta confiável , para todos os usuários. '---------------------------------------------------------------------------- Dim reg Dim local Set reg = WScript.CreateObject("wscript.shell") local = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\" local = local & "Trusted Locations\Location99\" '------------------------------ 'Configurando pasta confiável '------------------------------ 'Seta subpastas como confiável reg.RegWrite local & "AllowSubfolders", 1, "REG_DWORD" 'data e hora da configuração reg.RegWrite local & "Date","18/04/2009 15:00","REG_SZ" 'Descrição sobre a pasta reg.RegWrite local & "Description","Super Fluxo CX","REG_SZ" 'Informa local e nome da sua pasta confiável 'ATENÇÃO - configure o nome da sua pasta reg.RegWrite local & "Path","C:\SuperFluxoCX","REG_SZ" Everton 25/03/2020 20:36:38 Olá, gostei do tutorial, mas ainda não foi util, para situações que Criquio comentou, para o Windows Vista e 7. Como solução paleativa, para Office 2007, eu fiz um auto-extrator com o winrar e mandei extrair na pasta %appdata%\Microsoft\Templates ai depois mandei um atalho para área de trabalho. Como esse endereço já é padrão na instalação do Office não precisei fazer nada nos registros. O mesmo caminho serve para os Windows XP, Vista e 7. Ai para evitar que não acessem o arquivo sem ligar as macros, criei telas para abertura e fechamento do arquivo. Abaixo tem um link de exemplo: http://docs.google.com/uc?id=0B5F1h3OZ0Od5MmQ4NTY2ZmItMWI2NC00YWRhLWFiMzctNWU1NWZiOTQzMmY2&export=download&hl=pt_BR Caso tiver outra solução que atenda todos os sistemas, agradeço... Criquio 07/02/2020 12:46:46 Muito bom, mas não existe uma maneira equivalente de fazer isso no registro do Windows Vista e no 7? |