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 : 12
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 011 - Substituindo menu principal do Access pelo seu menu personalizado

Muitas vezes, desejamos criar um projeto extremamente personalizado. Neste caso, o que queremos realmente fazer é substituir completamente o menu do Access por nosso próprio menu.

Antes de continuarmos, porém, é importante lembrar que durante o desenvolvimento estamos interessados em adicionar ferramentas ao Access e não remover as ferramentas já existentes. Não obstante, se o seu projeto for bem estruturado e contiver tudo que o usuário precisa, não há problemas em remover o menu do Access por completo.

Diferentemente do Excel ou Word onde o usuário precisa de acesso a funções e ferramentas de formatação, por exemplo, no Access isso é desnecessário.

Como o Access não é direcionado por eventos, precisamos utilizar alguns truques para fazer o que desejamos. Para este exercício, você precisará:

  • 1 tabela
  • 1 formulário
  • 1 módulo

Utilizaremos o formulário para carregar o código dos menus logo na abertura do projeto. Crie o formulário e antes de inserir qualquer código, defina-o como sendo o formulário de abertura. Vá até Ferramentas à Inicializar e defina o seu formulário como sendo o inicial.

Feito isso, entre em modo de design do formulário onde você deve entrar as seguintes linhas de código:

Private Sub Form_Load()

'   Chama a rotina para criação dos menus

    Call mnu

 

'   Fecha o formulário

    DoCmd.Close acForm, "loadfrm"

End Sub

Isto é tudo que precisamos para iniciar o nosso menu. A primeira linha chama a rotina que compilará o menu. A segunda linha simplesmente fecha o formulário.

O próximo passo é construir a nossa tabela. Aqui, utilize o método ensinado na automação dos menus. Insira quantos itens você achar necessário em sua tabela. Certifique-se de que os itens seguem a ordem correta para menus e itens de menu conforme a figura abaixo:


Figura 11-1

Após a inserção dos dados que comporão o menu, se desejar, oculte a tabela contendo os dados. Para ocultar a tabela, clique sobre ela com o botão direito do mouse e selecione Propriedades. Em seguida, selecione a opção Oculto.

Um dos itens de nosso menu é Sair. Este botão aponta para a ação sair a qual é utilizada para reinicializar os menus do Access. Se o usuário optar por fechar o aplicativo por completo utilizando o botão “x”; todo o projeto e aplicativo são fechados e o menu original reinicializado.

No topo do módulo você deve entrar as seguintes constantes:

Public Const NOMEMENU   As String = "MENU PRINCIPAL"

Public Const MENUACCESS As String = "Menu Bar"

Estas constantes serão utilizadas em nosso código.

Dito isso, podemos partir para o código diretamente. O código está comentado para que o leitor possa acompanhar os passos do código.

Sub mnu()

'   Dimensão dos objetos do menu

    Dim cmdBar  As CommandBar

    Dim popu   As CommandBarPopup

    Dim btn     As CommandBarButton

   

'   Dimensão dos objetos do banco de dados

    Dim cn      As Object

    Dim rs      As Recordset

    Dim Sql     As String

 

'   Define a conexão como sendo a conexão do projeto atual

    Set cn = Application.CurrentProject.Connection

 

'   Instrução SQL

    Sql = "SELECT * FROM [ItensMenu]"
   

'   Define o recordset

    Set rs = CreateObject("ADODB.Recordset")

 

'   Abre o recordset utilizando a instrução SQL e conexão acima

    rs.Open Sql, cn, 1

   

'   Em caso de erro, continuar a execução do código

    On Error Resume Next

 

'   Remove o menu anterior caso ele exista

    CommandBars(NOMEMENU).Delete

   

'   Se final do arquivo (End of File - EOF)

    If (rs.EOF) Then

   

'   Avisar que não há itens de menu na tabela

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

   

'   Se houver..

    Else

   

'   Cria a barra de comando/ferramenta como sendo um MenuBar

    Set cmdBar = Application.CommandBars.Add _

        (Name:=NOMEMENU, MenuBar:=True)

 

'       Enquanto não o final do arquivo

        While (Not (rs.EOF))

 

'       Define o caso do Tipo

        Tipo = rs![Tipo]

 

'       Seleciona o caso

        Select Case Tipo

       

            Case 1 'Caso 1: menu popup

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

                With popup

                    .Caption = rs![Caption]

                    .Width = rs![Width]

                End With

               

            Case 2 'Caso 2: botão

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

                With btn

                    .BeginGroup = rs![BeginGroup]

                    .Caption = rs![Caption]

                    .FaceId = rs![FaceId]

                    .OnAction = rs![OnAction]

                    .State = rs![State]

                    .Width = rs![Width]

                End With

        End Select

        rs.MoveNext

           

        Wend

    End If

 

'   Mostrar menu

    cmdBar.Visible = True

 

'   Proteger o menu

    cmdBar.Protection = msoBarNoCustomize + msoBarNoMove

 

'   Fecha o recordset

    rs.Close

 

'   Limpa o recordset da memória

    Set rs = Nothing

 

'   Limpa a conexão da memória

    Set cn = Nothing

End Sub

Ao rodar o código, o menu padrão do Access é removido e o novo menu inserido, conforme a figura abaixo:


Figura 11-2

Para terminar, precisamos da rotina de saída a qual removerá o menu acima e restabelecerá o menu padrão do Access.

No mesmo módulo que contém o código para inserção do menu, você deve inserir a seguinte rotina:

Sub sair()

 

'   Pergunta ao usuário se deseja realmente sair

    resposta = MsgBox("Você tem certeza que deseja terminar está sessão?", vbQuestion + vbYesNo, "Terminar sessão")

 

'   Se a resposta for negativa, então sair desta rotina

    If Not resposta = vbYes Then Exit Sub

  

'   Remove o menu criado

    CommandBars(NOMEMENU).Delete

 

'   Reabilita e reinicia o menu padrão do Access

    CommandBars(MENUACCESS).Enabled = True

    CommandBars(MENUACCESS).Reset

 

'   Fecha o projeto atual, mas permanece no Access

    Application.CloseCurrentDatabase

 

'   Remova o comentário da linha abaixo para fechar o Access também

'   Application.Quit

   

End Sub

A última linha do código fecha o Access. Caso este seja o objeto do botão sair remova o apóstrofo para ativar esta linha de comando.

« 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