AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI

Você está em: PrincipalArtigosSérie "Como Fazer": Menus no Access › Lições : 11
Quer receber novidades e e-books gratuitos?
« Anterior Δ Página principal ¤ Índice Próxima »
Criando menus, barras de comando e botões personalizados no Access usando VBA
Autor: Robert Friedrick Martim
Lição 010 - Automatizando a criação de menus

Até este ponto criamos vários menus e o leitor deve ter percebido que se o volume de menus e botões for elevado teremos um grande problema, pois o código ficará muito longo.

Esta parte é dedicada à automação deste processo. Embora os métodos anteriores sejam considerados “automações”, aqui automação quer dizer separar o código dos itens que compõem a barra de comando e menus.

Vamos supor que desejamos inserir um menu antes do menu Arquivo no Access. Este novo menu, conterá 8 diferentes botões e dois popups. O primeiro popup conterá 5 botões e o segundo popup conterá 6 botões. Coloque agora no contexto dos códigos anteriores.

É desnecessário dizer que o código para a construção de tal menu será enorme. Sem contar que se houver necessidade de acrescentar ou retirar menus e botões temos que editar diretamente no código. Você esqueceu um acento e tem que correr para o código. Um menu foi inserido na ordem errada e lá vamos nós para o código novamente.

Com certeza deve haver uma forma mais fácil para fazer isso, certo? Correto. Contudo, formas mais fáceis de fazer algo estão sempre evoluindo. Antes, viajar a cavalo era eficiente, depois foi carro e hoje é avião. Em breve, serão foguetes e quem sabe um dia nós viajaremos por tele transportação como no filme Jornada nas Estrelas.

Os métodos apresentados funcionam assim. Hoje, eles são eficientes. Amanhã alguém inventa uma idéia melhor. Portanto, ao desenvolver os métodos apresentados pense em como você pode melhorará-los.

Deixando o papo furado de lado, vamos ao que interessa: como melhorar o procedimento de criação de menus.

Primeiramente, precisamos estar claros do que desejamos fazer. Por exemplo, queremos acrescentar um FaceID? Queremos acrescentar um atalho? Qual a ação a ser executada? O que está sendo adicionado é uma barra de comando, menu ou botão? Em que ordem eles entram? Onde eles estarão posicionados? Flutuando ou anexado ao menu principal do Access? Ou será uma barra de comando para substituir a barra do Access?

Estas são perguntas que precisamos fazer antes de construirmos qualquer coisa. Observe que quando perguntamos algo, efetivamente já temos as respostas do que procuramos. Pense nisso. Você sabe as respostas, porém, não sabe como implementá-las. Esta é a diferença. Portanto, se há uma pergunta tem que haver uma resposta, caso contrário a pergunta é inválida.

Com isto em mente estamos prontos para iniciar a construção de nossa folha de solução. Aqui, passarei o meu raciocínio por trás da solução por mim apresentada.

O Access é um banco de dados e utilizaremos isso em nosso favor. Por exemplo, imagine uma tabela como sendo a nossa barra de comando. Tudo que está dentro da tabela é, portanto, um item de nossa barra de comando, por analogia.

Agora imagine o nome de cada campo em nossa tabela e uma série de itens em cada campo. Se cada campo é um menu (popup), então, cada item abaixo é um botão deste popup. Para ter uma idéia do que estou dizendo veja a figura abaixo:


Figura 10-1

Este exemplo nós veremos no próximo tópico quando faremos uma lista das barras de comando, menus e itens de menu. Veja que a forma como listo os itens é a forma natural dos menus.

Como podemos ver, com um pouco de imaginação contemplamos formas diferentes de solucionar o mesmo problema. Como cada objeto tem suas propriedades, precisamos definir quais propriedades nos interessam. Para o primeiro exemplo estaremos utilizando as seguintes propriedades:

  • Name/Caption
  • FaceId (para botões somente)
  • OnAction (para botões somente)
  • BeginGroup
  • Width

Como a barra de comando é composta por três objetos, manipularemos os seguintes:

  • MENU (os menus tipo popup)
  • BOTAO (os botões que executarão os comandos)

Para evitar erro na digitação (o que nos causaria dores de cabeça no código) os dois itens acima serão numéricos, o primeiro será 1 e o segundo 2.

Uma vez construída a sua tabela no Access, o formato geral deve ter a seguinte cara:


Figura 10-2

Como cada propriedade está escrita em inglês no VBA, os cabeçalhos também foram inseridos em inglês para facilitar a referência, leitura e compreensão.

Tanto no Excel quanto no Word o método será um pouco mais óbvio, já no Access a coisa muda um pouco de figura. Contudo, além de aprender como automatizar o processo você também aprenderá a utilizar o banco de dados, recordset (conjunto de registros), etc, em tempo de execução. Visto por este ângulo a criação de menus no Access oferece muito mais em termos de aprendizado.

Para completar este exercício você precisará de:

  • 1 Tabela
  • 1 Módulo

Ao criar sua tabela, você deverá inserir os seguintes itens:


Figura 10-3

Não estarei utilizando todas as propriedades no código que apresentarei, mas a tabela conterá tais propriedades caso seja necessário acrescentar algo no futuro.

Salve sua tabela como ItensMenu  e feche-a. Crie um módulo onde iremos inserir nosso código. Não esqueça de instalar as referências aos objetos do Office.

Terminado os passos acima, podemos partir para o nosso código. Logo no topo do módulo defina a variável pública constante NOMEMENU. As explicações estão contidas no código:

Public Const NOMEMENU As String = "MENU PRINCIPAL"

Sub mnu()

'   Dimensão das variáveis que compõem o menu

    Dim cmdBar  As CommandBar

    Dim popu   As CommandBarPopup

    Dim btn     As CommandBarButton

 

'   Dimensão dos objetos utilizados na conexão ao BD

    Dim cn      As Object

    Dim rs      As Recordset

    Dim Sql     As String

 

'   Define a variável cn (conexão) como sendo a conexão

'   do projeto atual   

    Set cn = Application.CurrentProject.Connection

 

'   Define a string SQL a ser usada na abertura dos registros

    Sql = "SELECT * FROM [ItensMenu]"

 

'   Cria o objeto recordset (conjunto de registros)

    Set rs = CreateObject("ADODB.Recordset")

 

'   Abre o cojunto de registros

    rs.Open Sql, cn, 1

   

'   Em caso de erro, continuar execução

   On Error Resume Next

 

'   Remove o menu anterior, caso ele exista

    CommandBars(NOMEMENU).Delete

'   Adiciona o objeto cmdBar aos CommandBars do Access

    Set cmdBar = Application.CommandBars.Add _

        (Name:="MENU PRINCIPAL", Position:=msoBarFloating)

 

'   Caso seja o final dos registros (EOF), avisar que não há nada   

'   na tabela para criar os menus

    If (rs.EOF) Then

        MsgBox "Não há itens para acrescentar ao menu!", vbInformation

            CommandBars(NOMEMENU).Delete

'   Se houver...

    Else

'   Enquanto (While) não (Not) for o final dos registros (EOF)

        While (Not (rs.EOF))

 

'       Tipo será igual ao valor no campo "Tipo"

        Tipo = rs![Tipo]

 

'       Seleciona o caso "Tipo"

        Select Case Tipo

 

'           Caso 1 é o menu do tipo "popup"

            Case 1

'               Cria o menu popup na barra "cmdBar" criada acima

                Set popup = cmdBar.Controls.Add(Type:=msoControlPopup)

 

'               Com o "popup"...

                With popup

'                   Define o texto como sendo o campo "Caption"

                    .Caption = rs![Caption]

'                   Define a largura como sendo o campo "Caption"

                    .Width = rs![Width]

                End With

 

'           Caso 2 é refe-se ao botão               

            Case 2

'               Cria o o botão no menu "popup" criado acima

                Set btn = popup.Controls.Add(Type:=msoControlButton)

 

'               Com o "botão"...

                With btn

'                   Utilizar cada campo dos registros

'                   para definir cada uma das propriedades abaixo

                    .BeginGroup = rs![BeginGroup]

                    .Caption = rs![Caption]

                    .FaceId = rs![FaceId]

                    .OnAction = rs![OnAction]

                    .State = rs![State]

                    .Width = rs![Width]

                End With

 

'       Termina a seleção do caso "Tipo"

        End Select

'       Move para o próximo registro no conjunto de registros (recordset)

        rs.MoveNext

 

'       Termina o loop "While"          

        Wend

'   Termina a condição "IF"

    End If

 

'   Mostra e proteje a barra de comando

    cmdBar.Visible = True

    cmdBar.Protection = msoBarNoCustomize + msoBarNoChangeDock + _

        msoBarNoHorizontalDock

 

    rs.Close

    Set rs = Nothing

    Set cn = Nothing

End Sub

Rodando o código uma pequena barra de comando flutuante é adicionada ao Access:


Figura 10-4

« Anterior Δ Página principal ¤ Índice Próxima »

você conhece a universidade do access?

Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela

Capa da Universidade do Access

Aplica-se ao Access 2019, 2016, 2013 e 2010!

13 Cursos - 574 Vídeo-Aulas - 63:32 horas

Para todos os detalhes, acesse:

https://juliobattisti.com.br/universidade-do-access.asp

Quer receber novidades e e-books gratuitos?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI

(Online, Vitalício, Prático e Atualizado)!

  • Chega de ser Ignorado pelo Mercado!

  • A vida não vai Melhorar Sozinha!

  • Quem domina infraestrutura, domina o Mercado.

  • Com esta Formação você vai Dominar o Conhecimento e torne-se o Profissional que as Empresas estão Buscando, "desesperadamente", mas não estão encontrando.

NÃO PROCURE VAGAS, SEJA PROCURADO!

 

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

Para Todos os Detalhes, Acesse:

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

https://juliobattisti.com.br/curso-infra-ti.asp

 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2026 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI