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

Clique aqui e obtenha mais detalhes.


Alterando a cor do Access Runtime

Resolvi instalar o Access Runtime 2010 e experimentar se era possível trocar a sua cor básica prata para azul ou preta e para a minha surpresa foi possível, já que se trata de uma configuração geral do Office e não do Access, em particular!

Como configurar?

O Access Runtime não possibilita acesso a nenhum tipo de configuração, via tela de designer ou ribbons básicas, pois estes não estão presentes. Desta forma, configurações só podem ser feitas mediante o uso do VBA.   No caso, em particular da troca de cor, a definição fica armazenada na chave THEME, no registro do Windows e no seguinte endereço:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Theme (1-Azul , 2-Prata, 3-Preto)

Usando o Windows Scripting, podemos com algumas poucas linhas alterar/criar a chave THEME, no registro do Windows.   Veja a função abaixo, que serve tanto para o Access 2007 quanto para o Access 2010:

Option Compare Database
Option Explicit

#If VBA7 Then
Const ChaveReg ="HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Theme"
#Else
Const ChaveReg ="HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\Theme"
#End If
 
Enum eCor
   Azul = 1
   Prata = 2
   Preto = 3
End Enum
----------------------------------------------------------------------------
Public Sub fncCorAccess(cor as eCor)
Dim objReg As Object
Set objReg = CreateObject("wscript.shell")
'Gravar valor na chave THEME
objReg.RegWrite ChaveReg, cor, "REG_DWORD"
Set objReg = Nothing
End Sub

Para alterar a cor , basta executar o procedimento: Call fncCorAccess(Preto)

Reiniciando o Access

O único porém é que a cor só é alterada na abertura seguinte do Access.  Para criar um efeito imediato na configuração, montei um código que reinicia automaticamente a aplicação. Aqui está:

Private Sub fncReiniciandoAplicativo()
Dim strLocal As String
Dim objWs As Object
'------------------------
'Reiniciando
'------------------------
Set objWs = CreateObject("wscript.shell")
strLocal = CurrentProject.Path & "\" & CurrentProject.Name
strLocal = Chr(34) & "MSACCESS.EXE" & Chr(34) & " " & Chr(34) _
           & strLocal & Chr(34)
'0 - oculto / 5 - visível
objWs.Run strLocal, 5, "false"
'-------------------------------------
'Fecha atual
'-------------------------------------
Application.Quit acQuitSaveAll
End Sub

Segue,  para você testar, um exemplo que funciona também no Access completo.  Observe que utilizo o macro AutoExec que é para configurar a cor desejada, logo na inicialização. Neste exemplo, a cor padrão que configurei foi a preta.

Bom estudo!


 

 


14 comentário(s)

Marcelo David   01/07/2011 09:41:44

Cara, cada vez mais voce nos surpreende!! Parabéns!!!

MARCIO MELO - RJ   04/07/2011 21:00:01

Essa é muito boa, simples e eficiente, e nos mostra como o VBA é dinâmico, usando o Windows Scripting na reescrita do registro do windows que sabemos que é maior tabu, mais o seu conhecimento vai muito mais além do que eu imaginava, vou lhe dar um toque verifique o seu arquivo de download aponta para outro (video), dessa vez nem recebi a sua newDica, fui no seu site e verifiquei que devia ser novo porque ainda estava com pouca visitas.

Forte abraço!

Avelino Sampaio   05/07/2011 04:53:34

Marcio,

Corrigi o link. Obrigado pelo toque.

Sucesso!

Renato Siva   10/11/2011 15:49:43

Avelino... parabéns pelo código.
Mas para mim aqui não funcionou.

Dá erro ao troca a cor: "Propriedade não encontrada"
Trecho do código com problema: CurrentDb.Properties!themeAccess = Me!cboCor

Tem que configurar mais algo para funcionar ?

Avelino Sampaio   10/11/2011 16:09:23

Renato,

este erro acontece no meu arquivo exemplo ou no seu BD ?

No arquivo exemplo tem uma função chamada fncCriarPropriedade()

Altere o código do evento , acrescentando esta função:

Private Sub cboCor_AfterUpdate()
On Error Resume Next
CurrentDb.Properties!themeAccess = Me!cboCor
If Err.Number Then
Call fncCriarPropriedade("themeAccess", 1)
Err.Clear
End If
Call fncCorAccess(Me!cboCor)
End Sub

Tenho um artigo aqui na seção DICAS que demonstra como criar Propriedades.

No aguardo


Avelino Sampaio   10/11/2011 16:11:59

Renato,

troque este linha do código acima:

Call fncCriarPropriedade("themeAccess", 1)

Por esta:

Call fncCriarPropriedade("themeAccess", me!cboCor)

Sucesso!

Renato Siva   10/11/2011 16:51:59

Deu certo Avelino.
Obrigado pela atenção.

Dal Secco   07/02/2012 16:19:17

Achei muito legal.
Eu tenho como ler a cor do registro, para usá-la em uma tela?

Abraço e obrigado por você ser como é.

Avelino Sampaio   10/02/2012 15:07:53

Dal Secco

tem sim, use o comando regRead do script.

NumCor = objReg.RegRead(ChaveReg)

Sucesso!

Sérgio   16/07/2014 13:39:43

Avelino, boa tarde!

Primeiramente obrigado por disponibilizar seus conhecimentos!

Tentei utilizar o código acima, mas ao abrir o aplicativo o sistema emite a seguinte mensagem de erro:
"Erro em tempo de execução '3270':Propriedade não encontrada",
ao depurar é marcado em amarelo o trecho do código:
If CurrentDb.Properties!themeAccess = fncLerCorAccess Then.

Avelino Sampaio   17/07/2014 08:07:28

Sérgio,

leia o outros cometários que irá encontrar a solução.

Sucesso!

Daniel Raphael   19/11/2014 23:23:18

Queria mudar para outras cores vermelho amarelo verde tem como ?
Daniel Raphael

Avelino Sampaio   20/11/2014 08:29:55

Daniel,

não tem como.

Sucesso!

Nilson   13/02/2015 22:05:44

Boa noite,

É possível rodar um BD Access 2013 em uma máquina que não possua o Office instalado através do Access Runtime 2013?
Estou com problema no meu trabalho, pois só existe o Base (LibreOffice) e quase não tem recurso.


Envie seu comentário: