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


Vídeo - Criando Ribbons - parte 2 ( English Version )

Aonde as Ribbons ficam armazenadas ?

As ribbons podem ficar armazenadas em três locais distintos:

1 - numa tabela de sistema, de nome USysRibbons que você mesmo deve criá-la;
2 - numa tabela comum, com qualquer nome que você deseje dar a ela;
3 - fora do Access, num arquivo com extensão XML.

Quais campos devemos criar nas tabelas ?

id - AutoNumeração;
RibbonName - Texto - 255;
RibbonXml - Memorando.

Qual é a diferença entre a tabela de sistema e a tabela comum ?

Na tabela de sistema UsysRibbons , as ribbons já são carregadas no seu aplicativo , sem a necessidade de qualquer programação.  Seus nomes aparecem na lista de propriedades dos objetos e na configuração de inicialização do aplicativo.

 A figura abaixo apresenta a configuração de inicialização da Ribbons, que fica nas Opções do Access em Banco de Dados Atual.

Carregando a ribbon na inicialização do Access

 

Aparecem também na lista de propriedades de formulários e relatórios:

Configurando propriedade Faixa de Opções

 

Como carregar no sistema, as ribbons armazenadas de tabela comum (tblRibbons) e do arquivo XML?

Você deve usar a macro AutoExec para executar uma função que carregue na inicialização do aplicativo, as ribbons armazenadas  na tabela ou arquivo XML.

Veja o código exemplo que carrega as ribbons no sistema, armazenadas na tabela tblRibbons:

Public Function fncCarregaRibbon()
Dim rsRib As DAO.Recordset
On Error GoTo TrataErro
'-----------------------------------------------------------------
'Esta função carrega as ribbons armazenadas na tabela tblRibbons,
'que deve ser chamada pela macro autoexec
'
'Crie a macro autoexec, selecione a ação EXECUTARCÓDIGO
'e escreva o nome da função no argumento: fncCarregaRibbon()
'------------------------------------------------------------------
Set rsRib = CurrentDb.OpenRecordset("tblRibbons", dbOpenDynaset)
Do While Not rsRib.EOF
  Application.LoadCustomUI rsRib!RibbonName, rsRib!RibbonXml
  rsRib.MoveNext
Loop
rsRib.Close
Set rsRib = Nothing

Sair:
  Exit Function
TrataErro:
  Select Case Err.Number
    Case 3078
      MsgBox "Tabela não encontrada...", vbInformation, "Aviso"
    Case Else
      MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, _
      vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
  End Select
  Resume Sair:
End Function

Agora, observe o código exemplo que carrega as ribbons no sistema, armazenadas no arquivo XML:

 

Public Function fncCarregaRibbonXml()
Dim f As Long
Dim strText As String
Dim strOut As String
Dim rsXml As DAO.Recordset
On Error GoTo TrataErro

'------------------------------------------------------------------------------
'Esta função carrega as ribbons de arquivos XML,
'que deve ser chamada pela macro autoexec
'
'Crie a macro autoexec, selecione a açõa EXECUTARCÓDIGO
'e escreva o nome da função no argumento: fncCarregaRibbonXml()
'
'Crie uma tabela de nome tblRibbonsXml com os campos:
'RibbonName - Este campo você armazena o nome que deseja dar a ribbon
'RibbonXml - Este campo você informa o nome do arquivo Xml
'
'Este exemplo pressupõe que você esteja com os arquivos XML no 
'mesmo local do seu BD
'------------------------------------------------------------------------------
f = FreeFile
Set rsXml = CurrentDb.OpenRecordset("tblRibbonsXml", , dbOpenDynaset)
Do While Not rsXml.EOF
   Open CurrentProject.Path & "\" & rsXml!RibbonXml For Input As f

   Do While Not EOF(f)
      Line Input #f, strText
      strOut = strOut & strText & vbCrLf
   Loop

   Application.LoadCustomUI rsXml!RibbonNome, strOut
   strOut = ""
   strText = ""
   f = FreeFile
   rsXml.MoveNext
Loop

Sair:
   Exit Function
TrataErro:
   Select Case Err.Number
      Case 3078
         MsgBox "Tabela não encontrada...", vbInformation, "Aviso"
      Case Else
         MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, _
         vbCritical, "Aviso", Err.HelpFile, Err.HelpContext
   End Select
   Resume Sair:
End Function

É preciso referenciar uma classe do Office

Para se ter acesso às propriedades das ribbons pelo vba é necessário referenciar a classe Microsoft Office 12.0 Object Library.

Abra o VBA e no menu Ferramentas, clique em Referências.

Alterando referências do VBA

 

Selecione Microsfot Office 12.0 Object Library

Referência Microsoft Office 12.0 Object Library

 

Qual atributo devemos usar para dar funcionalidade aos botões de uma ribbon ?

O atributo utilizado para isso é o onAction.  Com ele podemos chamar uma função ou uma macro para executar uma determinada ação, como por exemplo , a abertura de um formulário.

É aqui que você verá a funcionalidade do id, do qual falei bastante  na primeira aula.

Um exemplo de controle Button com o atributo onAction:

<button
id = "btClientes"
imageMso = "DistributionListSelectMembers"
label = "Clientes"
onAction = "fncOnAction"
/>

Agora, observe o código da função fncOnAction:

Public Sub fncOnAction(control As IRibbonControl)

Select Case control.Id
   Case "btClientes"
      Docmd.OpenForm "frmClientes" 'Abre formulário cliente
   Case Else
       MsgBox "Você clicou no botão " & control.Id, vbInformation, "Aviso"
End Select

End Sub

O control.id tem o valor Id do botão que foi clicado e com o SELECT, configuramos o comando adequado a ser aplicado para o botão acionado.

Conheça o controle splitButton:

O controle splitButton em conjunto com o controle buttom são os controles mais usados e suficientes para a maioria dos projetos.

Veja na figura, um splitButton:

Ribbon personalizada - exemplo splitButton

 

 

Observe abaixo, a estrutura do splitButton e veja que ele trabalha em conjunto com os controles MENU e BUTTON.  O exemplo desta montagem, você verá na vídeo-aula.

 

Arquitetura controle splitButton

 

Aplicativo exemplo

Montei um pequeno arquivo exemplo para você estudar e exercitar esta aula. Este arquivo exemplo inclui o controle de usuários que é explicado neste artigo.

Vídeo-aula (leia a nota)

Nesta vídeo-aula, você irá aprender como configurar o controle splitButton.  Irá acompanhar como exportar as ribbons para o aplicativo exemplo e por fim, aprenderá como configurar a função que dá funcionalidade aos botões da ribbon.

Nota: Este vídeo tem duração total de 33 minutos. Porém, aqui pela página, você terá acesso apenas aos 5 minutos iniciais.  Caso queira assistir o vídeo na íntegra, basta adquirir o kit MontaRibbons.  Veja os detalhes da compra, clicando aqui.


 

 

Introdução:

As presentes Vídeos-aulas apresentam uma visão estrutural básica sobre ribbons e pretendem abrir a sua mente para o entendimento do que é possível ser feito com esta fácil programação.
 

Links

Temas abordados

MontaRibbons

Todas as informações necessárias para você adquirir esta incrível ferramenta.

Vídeo-aula 1


Breve apresentação do MontaRibbons
Noção estrutural da xml empregada
Como desabilitar toda a faixa superior do Acess
Usando imagens da galeria do Office
Usando controles internos do Office
Personalizando a barra de ferramentas de acesso rápido
Personalizando o Botão Office
Como criar uma ribbon personalizada
 

Vídeo-aula 3


Alterando os controles em tempo de execução, usando os atributos get
Como configurar a ribbon para a troca de idioma
Como ocultar/desabilitar os botões da ribbon, em função do usuário logado
 
Para saber como montar o controle personalizado de acesso de usuários, utilizado no arquivo exemplo desta aula, leia o artigo.
 
O arquivo exemplo desta vídeo-aula se encontra na pasta [exemplos] do MontaRibbons. O nome do arquivo é Maestro_idiomas.accdb
(disponível somente para quem adquirir o MontaRibbons).

 

Vídeo-aula 4

Uso de imagens externas (GIF, JPEG, PNG e ICO)

Vídeo-aula 5

Uso de imagens externas (GIF, JPEG, PNG e ICO) armazenadas em tabela local

 

 


 

 


46 comentários

Márcio   03/10/2009 15:32:27

Ótima video aula!

Pedro   13/10/2009 16:04:45

Excelente aula.
Estou ansioso pela 3ª aula!

JBSR-Kartoffel   16/10/2009 15:09:48

Através de aplicações assim que dá orgulha de ser brasileiro.
Eu já vasculhei a Net em busca de ferramentas para essa mesma função. Não existe ferramenta com essa grau de facilidade e com o MELHOR custo benefício.

Nosso companheiro Avelino está de parabens com essa ferramenta.

Avelino Sampaio   20/10/2009 09:59:47

Olá JBSR,

Realmente, esta talvez seja a primeira ferramenta criada em Access com este propósito.

O que mais me deixa feliz é o fato do MontaRibbons , no só servir como um assistente na criação das Ribbons, mais também de ser uma ferramenta, que proporciona ao utilizador, uma rápida curva de aprendizagem no uso da XML empregada.

Sucesso

JUJU   02/11/2009 17:55:28

AI QUE CHIQUE, GOSTEI, E O TIPO DE FERRAMENTA QUE SEMPRE QUIS, TODA COLORIDA CHEIA DE ENFEITE, MUITO BOA.
JÁ TO USANDO, MUITO BOA
BEIJOS
JUJU
BAIHA

Alan   02/12/2009 13:07:32

Avelino,
Existe limite para a quantidade de ribbons?

Alan   02/12/2009 13:17:24

Desculpa me expressei não me expressei bem.
Existe limite de guias em uma ribbon?

Avelino Sampaio   02/12/2009 16:19:27

Alan,

Não li a respeito se tem limite mas fiz um teste aqui com 11 guias e funcionou sem problemas.

Considero 11 guias até uma quantidade excessiva. Portanto devendo atender a qualquer projeto

Sucesso

Avelino Sampaio   02/12/2009 16:25:40

Alan,

lembrando que você pode montar uma ribbom específica para cada formulário. Quando você então carrega um formulário de pedidos, por exemplo, a ribbon deste formulário é carregada, substituindo a ribbon principal. Quando fechar o formulário de pedidos a ribbon principal volta a aparecer.

Sucesso

thiago   05/12/2009 11:45:35

Olá,


Como faço para adquirir o software monta ribbons.

Parabéns pelo trabalho.

Alan    09/12/2009 13:16:23

Boa tarde, tudo bem!

Eu mudei a forma de montar as ribbons. Optei por fazer uma Ribbon utilizando os sliptbutton, atendeu bem o que eu queria.

Mas, aproveito para lhe perguntar. Você tem algum exemplo ou sabe como deixar nos buttons e na ribbons imagens de sua escolha.

Abraços

Alan.
alan.silva@saofrancisco.edu.br

JUNIOR ROCHA   10/12/2009 01:36:41

Amigo como compro o programa?
junior@spacedigital.com.br
Aguardo URGENTE..

Avelino Sampaio   10/12/2009 06:10:48

Junior Rocha,

Você pode comprar fazendo um depósito ou através de boleto bancário.

Mandei pro seu email todos os detalhes.

Grato pela sua decisão de compra e garanto que foi um ótimo investimento na sua profissão.

Sucesso

Avelino Sampaio   10/12/2009 06:28:57

Alan,

compra o MontaRibbons que eu te ofereço toda a assessoria necessária.

Aproveita que ano que vem o valor do aplicativo vai subir de preço.

Sucesso

Aldo Pini Junior   21/12/2009 23:26:04

Olá Avelino, vc pode me mandar os dados para depósito? Meu email é aldopini@yahoo.com.br

No aguardo

Avelino Sampaio   22/12/2009 06:56:40

Aldo,

te passei os dados

Obrigado

Milquizedeque Almeida   18/05/2010 13:28:32

Olá avelino.

Montei uma ribbon no meu projeto numa boa. Realmente uma ferramenta incrível.
Minha dúvida
Se precisar alterar a ribbon que já está no projeto. Qual é o melhor caminho? No próprio access? Ou devo voltar ao montaRibbon? Se voltar, perderei as modificações que já fiz nos códigos quando transferir a nova?

Como posso usar imagens alem das do montaRibbon?

Abração e parabéns pelo programa.

Ronnie Ricarth   10/03/2011 16:44:11

Olá Avelino, estou usando o montaribbon, tudo certo, montei as ribbons que queria a as adicionei aos meus aplicativos, montei as ribbons no esquema office 2007, porém, quando inicio os aplicativos em pcs com office 2007 aparece mensagem de incompatibilidade de versão, não impede o funcionamento, mas aparece a mensagem ao abrir e ao fechar o aplicativo.

Cristyan   23/03/2011 15:03:13

Prezado Avelino,

Como você consigo a guia das Gallerys no access?


Grato.

Avelino Sampaio   24/03/2011 10:32:07

Cristyan,

É uma ribbon personalizada, contendo nome por nome. A microsoft oferece um arquivo que se instala no Excel. Procure no google com a frase "gallery Office 2007" que vc irá encontrar o arquivo.

Sucesso

Cristyan   24/03/2011 15:01:46

Hum legal. Já havia encontrado essa ribbon para o Excel. Pensei que havia uma para o Access pronta também, mas não encontrei.

Muito obrigado!

Alan    30/03/2011 13:29:33

Boa tarde, tudo bem!
Avelino,
Você saberia informar, se é possível colocar por exemplo um resultado de uma soma em uma ribbon? Se sim, você teria algum exemplo?
Agradeço pela atenção.

Avelino Sampaio   30/03/2011 17:52:48

Alan,

sim, é possível.

Como sugestão você pode alterar um controle LABEL, usando o getLabel

labelControl
id = "lbSoma"
getLabel = "fncGetLabel"

Sucesso

Rui Ramos   21/04/2011 17:24:10

Fantástico, nunca tinha visto algo tão completo, Parabêns

Alexandre   21/11/2011 14:47:11

Olá, eu teste e não funcionou, aparece que tem um erro na sintaxe da macro ou código. me ajude !!

Avelino Sampaio   22/11/2011 05:45:20

Alexandre,

você se refer ao aplicativo exemplo Maestro ?
Qual é mensagem do erro ?
Qual é versão do seu Access ?

No aguardo

Jr   04/01/2012 14:11:58

Caro Avelino,

No caso de publicar uma aplicação no Sharepoint....tem algum problema de compatibilidade? Estou meio "boiando" com relação ao Sharepoint....mas gostaria de comprar o Cria ribbons bem como usar o OPEN e o Maestro para dar segurança as minhas aplicações.

Obrigado.

Avelino Sampaio   05/01/2012 11:18:00

Jr,

passei para o seu email o procedimento de compra do MontaRibbons.

o OPEN e o Maestro são de uso livre.

Grato

Dietrich Rocha   30/03/2012 10:19:02

Avelino,
essa video aula 2 nao esta disponivel para download, seria possivel disponibilizar o link ?

LS   18/04/2012 23:47:35

Estou querendo comprar, mas antes eu prefiro resolver minhas dúvidas.

Eu criei a tabela USysRibbons e crio o campo ID, Descrição e o do xml e coloquei esse código :

Só pra criar um grupo mesmo...

Porém, quando salvo e vou olhar lá em "Nome da Faixa de Opções", não aparece nada.

E agora, o que faço?

Avelino Sampaio   19/04/2012 06:16:16

LS,

tem que assistir as duas primeiras vídeos-aulas, para rapidamente enteder como contruir as ribbons e implementá-las.

Bom estudo!

LS   19/04/2012 20:26:41

Obrigado, mas eu já fiz igualzinho, copiei e colei seu código xml e não carrega lá em cima.

http://maximoaccess.maisforum.com/t7212-ribbon-nao-aparece-no-nome-da-faixa-de-opcoes#58335

Se possível, abra meu arquivo e veja se aparece ou se tem algo de errado no código.


Sobre a aplicação XML, mesmo ainda não tendo conseguido, não sabia que seria possível criar essas ribbons, me interessei pelas Ribbons e pretendo adquirir o seu software, não tenho dúvidas que criar um projeto usando ribbons é a melhor coisa.

Avelino Sampaio   20/04/2012 04:03:37

LS,

baixe da seção Download, aqui do site, o aplicativo Maestro. Assim teras uma boa noção do que é possível realizar com as ribbons.

O Montaribbons é o melhor kit do mundo para se aprender do zero. Não hesite em comprar pois terá minha TOTAL assessoria por email e pelo MSN.

Bom estudo!

Jader Ricardo   30/04/2012 01:57:56

Avelino,

Acabei de seguir os passos da video aula 2 e exportei minha ribbon para o meu aplicativo. No meu aplicativo uso meus formulários com "abas", ou seja, quando executo o formulário ele fica "preso" abaixo da ribbon. Agora, com a nova ribbon, o formulário esta ficando como se estive configurado para "Popup = Sim". Sabe me dizer o que pode ser isso?

Grato,
Jader Ricardo

Jader Ricardo   30/04/2012 02:18:14

Avelino,

Desculpe a minha falta de atenção, foi erro meu aqui ... hehehe ... chamei o formulário forçando o estilo "popup" .... DoCmd.OpenForm "Meuformulario", acNormal, , , , acDialog

Jader Ricardo

Avelino Sampaio   01/05/2012 05:29:31

Jader,

obrigado pelo seu feedback e sucesso!

Jorge Luiz Marsola Correa   14/07/2012 14:29:52

Muito bom, o tutorial, alem de ilustrar com detalhes o uso do aplicativo, tambem demonstra com clareza o funcionamento dos ribbons. Parabens

Wiraktan   23/07/2012 23:27:15

Avelino!

Tenho visitado sempre o seu site. Estou tentando aprender a usar e construir as ribbons, já estou aprendendo a criar os grupos e guias, botões, mas na hora de colocar para funcionar os botões aí estou levando pau. Segui seu exemplo acima mas ainda nao estou conseguindo. Está função eu posso colocar em qualquer módulo?

Public Sub fncOnAction(control As IRibbonControl)

Select Case control.Id
Case "btClientes"
Docmd.OpenForm "frmClientes" 'Abre formulário cliente
Case Else
MsgBox "Você clicou no botão " & control.Id, vbInformation, "Aviso"
End Select

End Sub

Avelino Sampaio   25/07/2012 08:11:47

Wiraktan,

Cole esta função em um módulo global.

Sucesso!

Wiraktan Cidrin   28/07/2012 18:36:37

Obrigado Avelino!

Deu certo! valeu!

Luiz Antonio Farias   12/09/2012 02:04:22

Olá Avelino.
Estou usando o Monta Ribbon para uma aplicação em minha empresa.
Criei um botão que excuta a Função abaixo, só que ela dá erro exibindo a seguinte mensagem:

Erro em tempo de Execução '2046':

O comando ou a ação 'SaídaPara' não está disponível agora.

Quando esta é executada fora do MontaRibbon ela funciona perfeitamente.
Poderia me ajdar na solução deste problema? Já tentei disparando a chamada do código por Macro e o mesmo acontece.

Abaixo o código:

Public Function EnviaAtualizações()

DoCmd.SetWarnings False
Beep
MsgBox "Atenção !! Gerando arquivos de atualizações para envio por e-mail a Força de Vendas", vbInformation, "Exportação de Dados para Atualização da Força de Vendas"
Beep
MsgBox "Gerando Arquivo de Usuários para envio", vbExclamation, "Exporta Arquivo de Usuários Atualizados"
DoCmd.SendObject acTable, "Usuarios", "Excel97-Excel2003Workbook(*.xls)", "lasfarias@hotmail.com", "", "", "Atualização e-CAD - Usuários", "Prezado Consultor. Por favor atualize seu sistema e-CAD com esta nova versão de dados de usuários do sistema.", False, ""
Beep
MsgBox "Gerando Arquivo de Agencias de Vendas Atualizados", vbExclamation, "Exporta Agencias de Vendas"
DoCmd.SendObject acTable, "AgenciadeVendas", "Excel97-Excel2003Workbook(*.xls)", "lasfarias@hotmail.com", "", "", "Atualização e-CAD - Agência de Vendas", "Prezado Consultor. Por favor atualize seu sistema e-CAD com esta nova versão de dados de Agência de Vendas.", False, ""
Beep
MsgBox "Gerando Arquivo de Escritório de Vendas", vbExclamation, "Exporta Escritório de Vendas"
DoCmd.SendObject acTable, "EscritoriodeVendas", "Excel97-Excel2003Workbook(*.xls)", "lasfarias@hotmail.com", "", "", "Atualização e-CAD - Escritório de Vendas", "Prezado Consultor. Por favor atualize seu sistema e-CAD com esta nova versão de dados de Escritório de Vendas.", False, ""
Beep
MsgBox "Gerando Arquivo de Grupo de Preços", vbExclamation, "Exporta Grupo de Preços"
DoCmd.SendObject acTable, "GrupodePrecos", "Excel97-Excel2003Workbook(*.xls)", "lasfarias@hotmail.com", "", "", "Atualização e-CAD - Grupo de Preços", "Prezado Consultor. Por favor atualize seu sistema e-CAD com esta nova versão de dados de Grupo de Preços.", False, ""
Beep
MsgBox "Gerando Arquivo de Clientes Cadastros no SAP", vbExclamation, "Exporta Cadastro de Clientes SAP"
DoCmd.SendObject acQuery, "ClientesSAP", "Excel97-Excel2003Workbook(*.xls)", "lasfarias@hotmail.com", "", "", "Atualização e-CAD - Clientes SAP", "Prezado Consultor. Por favor atualize seu sistema e-CAD com esta nova versão de dados dos Clientes SAP.", False, ""
Beep
MsgBox "Gerando Arquivo de Grupo de Clientes", vbExclamation, "Exporta Grupo de Clientes"
DoCmd.SendObject acTable, "GrupodeClientes", "Excel97-Excel2003Workbook(*.xls)", "lasfarias@hotmail.com", "", "", "Atualização e-CAD - Grupo de Clientes", "Prezado Consultor. Por favor atualize seu sistema e-CAD com esta nova versão de dados de Grupo de Clientes.", False, ""
Beep
MsgBox "Arquivos enviados com sucesso.", vbExclamation, "Fim de Envio."
End function

Tiago Bizze   04/03/2013 13:23:38

Boa taerde Avelino!
Primeiro quero unir-me aos colegas que já postaram agradecendo por esta preciosa ferramenta que é o MontaRibbons: muito útil, fácil e eficaz! Valeu pela idéia por compartilha-la!

Estou c/ um problema:

Montei a Ribbon tudo ok c/ botões já c/ ações, tudo certinho.
Estou tentando importa-la em meu aplicativo via importação de XML com uso da função "fncCarregaRibbonXml()", porém ta dando erro 3265 "Item não encontrado nesta coleção".

Descobri que é na linha: "Application.LoadCustomUI rsXml!RibbonNome, strOut". Depurando, mais especificamente fi que o item não encontrado refere-se a "rsXml!RibbonNome".

Aguardo ajuda!




Luis Antonio de Oliveira   23/04/2013 17:37:07

Boa tarde Avelino. Gostaria de saber se é possível alimentar uma ribbon do tipo checkbox através de um campo Sim/Não de uma tabela. obrigado.

Avelino Sampaio   24/04/2013 05:12:33

Luís Antonio,

para modificar um checkbox tem que utilizar o atributo getPressed, conforme exemplo abaixo:

checkBox id="chbAgenda" label="Agenda" getPressed="fncGetPressed" onAction="fncOnAction"

Para disparar o getPressed use o "Invalidate" ou o "InvalidateControl". Veja o uso destes comandos no meu artigo sobre os controles da ribbon Combobox e Dropdown.

Sucesso!

Marcelo   06/10/2013 01:27:31

Bom dia!

Qual é o plugin usado neste site, pois estou com o Windows 8 e não consigo fazer rodar.

Avelino Sampaio   06/10/2013 10:29:28

Marcelo,

utilize o navegado Internet Explorer.

Sucesso!


Envie seu comentário: