Como carregar o seu menu sem que ele vá para lista de suplementos?
A Microsoft, nesta versão 2007, decidiu que todos os itens de menu deveriam ficar expostos para facilitar a vida de programadores e utilizadores. Resolveu também mudar o layout e a forma de como manipulá-los através da programação XML. Menus agora se chamam Faixas (Ribbons) e devido as mudanças radicais na estruturação, podemos afirmar que menu será coisa do passado. Você ainda poderá criar e/o alterar menus no Access 2007 mais só através da programação pelo VBA.
Os menus funcionam perfeitamente e dependendo da configuração de inicialização feita no seu aplicativo, serão alocados nas Ribbons do Access 2007, na guia suplementos. Veja na figura abaixo:

Podemos modificar esta configuração tanto na versão anterior do
Access como no Access 2007. Vejamos
primeiro, como configurar pela versão anterior. Abra o
aplicativo no modo estrutura , vá no menu "ferramentas" e
clique em "inicializar".

Desmarque os itens: "Permitir uso de menus completos do Access" e
"Permitir barras de ferramentas internas".
Abrindo o aplicativo pelo Access 2007, depois da configuração:

Agora configurando direto no Access 2007, para ter o mesmo efeito
mostrado na figura acima., proceda da seguinte forma: abra o
aplicativo no modo estrutura, selecione o botão do Office (canto
superior esquerdo) e clique em "Opções do Access". Selecione o
menu "Banco de dados atual" e desmarque os itens:"Permitir Menus
Completos" e "Permitir Barras de Ferramentas Internas.
Veja na figura abaixo:

Pode acontecer que o Access 2007 configure o menu para não visível e/ou não habilitado, depois das configurações citadas acima. A solução para isso é rodar duas linhas no VBA, que passe o menu para a condição visível e/ou habilitado. Abra o banco de dados no modo estrutura (no Access 2007). Dê um CTRL + G e digite na janela imediata os comandos, conforme a figura abaixo. Pressione a tecla ENTER para cada comando digitado. Feche tudo , reabra o BD e pronto.

Como resolver essa questão não tendo acesso ao Access 2007?
Adicionando os comandos, mostrado acima, na inicialização do seu
Banco de Dados através de um formulário de inicialização ou através
da macro AutoExec.
Como resolver pela macro AutoExec ?
Abra uma nova macro e selecione a ação "ExecutarCódigo" e digite o
nome da função a ser carregada( exemplo: fncCarregaMenu() ).
Salve a macro com o nome de AutoExec.

Abra o módulo global e crie a função, conforme indicado abaixo:
Public function fncCarregaMenu() On error resume next
'------------------------------
'comando para habilitar o menu
'------------------------------
application.CommandBars("NomeDoSeuMenu").Enabled = true
'--------------------------------------
'comando para tornar o menu visível
'--------------------------------------
application.CommandBars("NomeDoSeuMenu").Visible = true
End Function
Artigos Relacionados
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Criando ribbons (parte 1)
Vídeo - Criando Ribbons (parte 2)
|
21 comentário(s) Nixon 2/6/2009 18:31:51 Mesmo desmarcando o indicado, continua aparecendo o menu inicio. Avelino Sampaio 3/6/2009 13:51:56 Olá Nixon Quando a faixa INICIO aparece é uma indicação de que o SEU menu pode NÃO estar carregado na inicialização. Verifique em: BOTÃO DO OFFICE > OPÇÕES DO ACCESS > BANCOS DE DADOS ATUAL > BARRAS DE MENUS (verifique se seu menu está na lista). Observe que numa das figuras acima, o meu menu de exemplo chama-se "menu_principal" Grato Avelino Sampaio Avelino Sampaio 14/7/2009 19:02:51 ATENÇÃO A dica que foi dada é para arquivos com extensão MDB rodando no Access 2007. Se você importou os objetos mais o menu para a nova extensão ACCDB do Access 2007, o menu irá se apresentar na FAIXA(ribbon) de suplementos. O que deve ter acontecido com o Nixon é que após as alterações citadas aqui, ele ficou com as Ribbons início e suplementos ativas. É possível ocultar a ribbon INÍCIO para ficar apenas com a Ribbon suplementos mais o aspecto do menu, inserido na ribbon, ao meu ver, não ficará nem um pouco elegante. Vou dar os passos aqui de forma bem sucinta para ocultar a ribbon INÍCIO 1 - Criar a tabela USysRibbons com os campos ID(numeração automática), RibbonName(texto ), RibbonXml(memorando) 2 - Abra a tabela e digite para a RibbonName : MinhaFaixa E para a RibbonXml: [customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"] [ribbon startFromScratch="false"] [tabs] [tab idMso="TabHomeAccess" visible="false" /] [tab idMso="TabAddIns" label="Meu menu" /] [/tabs] [/ribbon] [/customUI] troque [..] por <..> 3 - Feche o BD e o reabra para ele ler a tabela. 4 - Vá em: Botão do Office > Opções do Access > Banco de dados atual > Nome da faixa de opções > Escolha MinhaFaixa. 5 - Feche o bd e reabra para ver o resultado Sucesso ... Neto 18/7/2009 19:06:29 Cara... estava mantendo minha aplicação toda em Access2003 por causa destas Barras (ribbons). Vou testar a sua dica, e tendo sucesso, vou migrar para o Access2007. E de todas as pesquisas que procurei na net, esta foi sem dúvida a mais completa. Obrigado. Avelino Sampaio 20/7/2009 19:00:33 Neto, se tiver alguma dificuladde pode entrar em contato comigo que tento lhe ajudar neste processo. Sucesso Carlos Eduardo 1/8/2009 22:31:54 Avelino, Funcionou beleza a dica da Ribbon. Valeu. Sds, Carlos Eduardo Machado 12/8/2009 12:55:08 Prezado amigo, você poderia me ajudar em: Criei algumas abas, com botões para chamar formul... mas, quando chamo um relatório gostaria que ativasse a aba padrão "Visualização de Impressão". É possível fazer via VBA, também em VBA posso OCULTAR, DESABILITAR uma Aba ou um controle nessas... De já agradeço... Avelino Sampaio 26/8/2009 06:15:20 Machado, você esta se refindo a que Access ? No Access 2007 o correto é desenvolver ribbons para isso. Em breve estarei oferendo vÃdeo-aulas ensinando a programar isso. Se vc ainda não conseguiu resolver o seu problema entre em contato comigo pelo link contato. Sucesso Ren@tas2 21/9/2009 08:59:35 Eaii gostei muito porque eu tô fazendo uma prova e ajudou..... ObrigadOo Adélio 20/10/2009 01:01:32 Amigo, suas dicas são ótimas! Gostaria de um auxÃlio: pretendo atribuir, durante a execução do banco de dados, a alguns botões das ribbons, a condição de "false" para o atributo enabled. Sei fazer isso via xml, mas não sei como fazer para que, em tempo de execução, um determinado botão fique desativado. Ou seja, como fazer com que o access leia novamente, durante a execução do banco, a XML, para desativar determinados botões? Avelino Sampaio 20/10/2009 06:59:10 Adélio, 1) Acrescente uma chamada de função na linha do esquema. customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="fncOnLoad" 2) Num módulo global crie uma variável Public e acrescente a função abaixo Option Compare Database Public objFaixa As IRibbonUI ---------------------------------------------------------------------------------- Public Sub fncOnLoad(ribbon As IRibbonUI) Set objFaixa = ribbon End Sub 3) A variável assume a classe IRibbonUI que possui os métodos INVALIDATE E INVALIDATECONTROL. 4) Para reavaliar um controle da ribbon você tem que informar o id do controle para o objeto objFaixa.invalidatecontrol (btClientes) Onde btclientes, como exemplo, seria o id de um botão que carrega um formulário de clientes 5) quando vc manda reavaliar um controle, é necessário que o controle possua um atribbuto get para se chamar uma função e aà através da função vc determina o que deve ser feito. No seu caso habilita-lo ou não. 6) Se precisar de mais esclarecimentos entre em contato, ok Sucesso Adélio 20/10/2009 16:11:01 Boa tarde, meu caro. Antes de mais nada, obrigado pelo auxÃlio. Abusando um pouco mais de sua boa vontade, gostaria de aprofundar um pouco na questão: pelo que entendi, a fncOnLoad() será chamada pelo atributo get, quando eu mando reavaliar um controle. Porém, não consegui concatenar minha necessidade com a solução proposta. Serei um tanto ousado e explicarei o que estou fazendo (pedindo perdão se eu disser alguma besteira, pois na verdade eu sou apenas contador e advogado... trabalho com informática por puro PRAZER). Mas vamos à situação concreta (no próximo comentário): Adélio 20/10/2009 16:15:30 -Meu banco de dados tem uma tabela chamada "MenusRibbons" onde eu informo todos os atributos que desejo (id, label, keytip, enabled, size etc). Também tem um campo "Cod", chave. -Tenho uma tabela de permissões de acesso de usuários, em que informo o código do usuário e o campo "Cod" correspondente ao item de menu que eu desejo. Se o usuário estiver naquela tabela, com aquele item de menu, o atributo enabled será "true". Caso contrário, será "false". -Construo a XML com base nessas configurações, no momento da abertura do banco de dados. -Minha dúvida: como fazer com que o Access leia TODA A XML novamente, reavaliando TODOS os controles da Ribbon, antes dela ser exibida? Avelino Sampaio 20/10/2009 17:49:26 Adélio, Acesse o link contato do site para eu receber seu email. Tenho aqui um exemplo e uma vÃdeo-aula improvisada sobre este tema, que acredito, possa esclarecer melhor a suas dúvidas. Fico no aguardo ANTONIO 27/12/2009 23:10:53 o meu access é 2007,qdo os menus saem no suplementos que virou o nome do menu fica deselegante. vc sabe como faz para colocar eles somente na linha horizontal sem ficar na vertical?obrigado. Avelino Sampaio 29/12/2009 12:12:40 Atonio, me forneça mais detalhes pelo link "contato" aqui do site. Se possível, me enviando uma imagem da tela (print screen), para que eu possa te ajudar de forma mais efetiva. No aguardo antonio 1/1/2010 15:25:03 obrigado avelino ,andei estudando seu exemplo e aprofundei no assunto so que sei so um pouquinho ainda,qdo vc coloca na propriedade o nome do botao button id,que pasta ele busca esse nome?sse for interno no access como faço para listar os botoes exisstentes?obrigado márcio 17/2/2010 13:48:10 avelino utilizei sua dica e deu certo, mas como faço para ativar os menus após desativá-los? um abraço Avelino Sampaio 24/2/2010 05:15:23 Márcio, Segurando a tecla SHIFT, na inicialização do aplicativo, vc consegue ter acesso a estrutura. Se não for isso, entre em contato pelo link CONTATO e me forneça mais detalhes para eu poder te ajudar de forma mais efetiva. Sucesso Helder 26/7/2010 21:04:47 Como faço para criar uma barra de menu personalizada para minha base de dados Aldovrando 13/8/2010 15:36:16 Avelino eu crei a barra certinho to usando uma função no xml cahamda getEnabled que chama uma função dentro do meu banco de dados se o usuario tem permissão ou não para aquele botão.. ele executa tudo sem da erro mas o botão não atualiza. Usei o método InvalidateControl q vc comenta la em cima.. mas os botões ficam todos desativados.. até os q o usuario tem permissão. E agora o q eu faço? |