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.

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 BD 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 BD 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 BD, 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 Acces 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 BD 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.
|
13 comentários Liomar Souza 13/7/2009 13:04:12 Valeu, Avelino, muito didático! Luiz Carlos 28/8/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 7/2/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/3/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/3/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/3/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/4/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/5/2010 17:42:55 Caro Avelino, obrigado pelas dicas. Agora, como desbloquear VBA no Access Run-Time. Avelino Sampaio 21/5/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/5/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/5/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/5/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/5/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 |