... Pague apenas R$67,00 uma nica vez e tenha acesso por 1 ano aos vdeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Configurando Macro de Segurança

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.

Aviso Segurança


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:

Aviso Segurança

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).

Aviso Segurança


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).

Aviso Segurança

 

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:

Aviso Segurança


Clique em "Adicionar Novo Local"

Aviso Segurança


Selecione a sua pasta confiável através do "Procurar" e marque também que as subpastas são confiáveis.

Aviso Segurança


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).

Aviso Segurança


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.

Aviso Segurança


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:

Aviso Segurança


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).

Aviso Segurança


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.

Aviso Segurança

 

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!


 

 


47 comentários

Liomar Souza   13/07/2009 13:04:12

Valeu, Avelino, muito didático!

Luiz Carlos   28/08/2009 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

Criquio   07/02/2010 12:46:46

Muito bom, mas não existe uma maneira equivalente de fazer isso no registro do Windows Vista e no 7?

Everton   25/03/2010 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...

Everton   25/03/2010 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/2010 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"

STELLA MARIS   19/04/2010 21:09:26

Avelino,
muito obrigada por essa ajuda, agora irei instalar o SP2 e vou torcer que meu BD fique 100%

DOMINGOS CASARIM   20/05/2010 17:42:55

Caro Avelino,
obrigado pelas dicas. Agora, como desbloquear VBA no Access Run-Time.

Avelino Sampaio   21/05/2010 08:18:48

Olá Domingos

Veja o artigo relacionado "CurrentProject.isTrusted". Tem um exemplo que vc pode testar no run-time

Sucesso

Domingos Casarim   21/05/2010 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/2010 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

paulo gesse da costa   28/05/2010 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   29/05/2010 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

Pepe   06/10/2010 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 ???


lucia   03/04/2011 15:01:03

ola, gostaria de saber quais as vantagens e desvantagens das macros no Access?

MARCIO.    27/07/2011 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.

jhom   02/09/2011 15:09:56

boa tarde me ajudou muito mesmo. Estou iniciando no access 2007 vlw pela dica...

Luciano Conti Kraemer   14/09/2011 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

Avelino Sampaio   18/09/2011 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!

HELENA ROMERO    26/09/2011 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   28/09/2011 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

Alan   30/09/2011 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   03/10/2011 08:21:18

Alan,

E qual é a versão do Access no XP ? E a versão do Access no Windows 7 ?

No aguardo

geane   19/02/2012 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

geane   19/02/2012 17:45:09

Ah!o meu microsoft office 2007,

Avelino Sampaio   20/02/2012 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   20/02/2012 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 ?

José Ademar   09/03/2012 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.

Avelino Sampaio   09/03/2012 17:16:43

José,

vá em "Artigos relacionados" deste tutorial e clique no link sobre "CurrentProject.isTrusted"

Bom estudo!

CARLOS ROBERTO OLIVEIRA COSTA   18/04/2012 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

Avelino Sampaio   19/04/2012 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!

Flavia Almeida   25/04/2012 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   26/04/2012 06:19:22

Flavia,

Acesse o tutorial "controle personalizado" e assista a vídeo-aula

Bom estudo!

Alex   07/08/2012 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.

ANDRÉ RICARDO   03/10/2012 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 ?

ALDONAY BELMOOK   29/10/2012 20:42:06

Parabéns Avelino, tenho acompanhado suas apresentações e sei que é de grande valia para todos.

Sidney de Lima   19/11/2012 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

Sidney de Lima   19/11/2012 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)

Aline Mendes   14/12/2012 09:29:23

Como criar um codigo com data para bloquear o access?

Evanor   08/01/2013 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...

TorresForte   28/03/2013 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....

Walteir Freire   20/07/2014 17:38:11

Vou testar, para ver se dá certol

Valdecir   12/05/2015 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

Gilberto Franguelli   03/07/2015 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.

HERBERT RAIMUNDO RABELO   19/08/2015 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

Avelino Sampaio   20/08/2015 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!

Juan   27/02/2016 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.


Envie seu comentário: