Applies ToAccess para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Quando cria uma nova base de dados, normalmente começa por criar vários objetos de base de dados, como tabelas, formulários e relatórios. É possível que alcance um ponto em que tem de adicionar alguma programação para automatizar determinados processos e associar os objetos de base de dados. Este artigo ajuda-o a orientar as ferramentas de programação no Access.

Neste artigo

O que é a programação?

No Access, a programação é o processo de adicionar funcionalidades à base de dados com macros Access ou código VBA (Visual Basic for Applications). Por exemplo, suponha que criou um formulário e um relatório e que pretende adicionar um botão de comando ao formulário que, ao clicar no mesmo, abre o relatório. Neste caso, programação é o processo de criar uma macro ou procedimento VBA e, em seguida, definir a propriedade do evento AoFazerClique do botão de comando, para que clicar no mesmo execute a macro ou o procedimento. Para uma operação simples, como abrir um relatório, pode utilizar o Assistente de Botões de Comando para efetuar toda a programação ou pode desativar o assistente e efetuar a programação por si próprio.

Nota: Muitos programas do Microsoft Office utilizam o termo "macro" para fazer referência ao código VBA. Isto pode ser confuso para Access utilizadores porque, no Access, o termo "macro" refere-se a uma coleção nomeada de ações de macro que pode montar com o Construtor de Macros. Access ações de macro representam apenas um subconjunto dos comandos disponíveis no VBA. O Construtor de Macros proporciona-lhe uma interface mais estruturada do que o Visual Basic Editor ao permitir-lhe adicionar programação a controlos e objetos, sem ter de saber código VBA. Deve lembrar-se de que nos artigos Access Ajuda, Access macros são referidas como macros. Por sua vez, o código VBA é referido como VBA, código, uma função ou um procedimento. O código VBA está contido em módulos de classe (que fazem parte de formulários ou relatórios individuais e que, normalmente, contêm código apenas para esses objetos) e em módulos (que não estão associados a objetos específicos e que, normalmente, contêm código "global" que pode ser utilizado em toda a base de dados).

Os objetos (como formulários e relatórios) e os controlos (como botões de comando e caixas de texto) tem várias propriedades do evento a que pode anexar macros ou procedimentos. Cada propriedade do evento está associada a um evento específico, como clicar no rato, abrir um formulário ou modificar dados numa caixa de texto. Os eventos também podem ser acionados por fatores fora do Access, como eventos do sistema ou por macros ou procedimentos anexados a outros eventos. A sua base de dados pode tornar-se complexa se adicionar muitas macros ou procedimentos a várias propriedades do evento de muitos objetos, mas na maioria dos casos pode alcançar os resultados que pretende com muito pouca programação.

Início da Página

Devo utilizar macros ou código VBA?

A decisão de utilizar macros, VBA ou ambos depende principalmente da forma como planeia implementar ou distribuir a base de dados. Por exemplo, se a base de dados estiver armazenada no seu computador e você for o único utilizador e estiver familiarizado com a utilização de código VBA, pode optar por utilizar VBA para executar a maioria das tarefas de programação. No entanto, se tenciona partilhar a sua base de dados com outras pessoas ao colocá-la num servidor de ficheiros, deverá evitar utilizar VBA por razões de segurança.

Deve basear a sua decisão de utilizar macros ou código VBA em duas questões: segurança e a funcionalidade que pretende. A segurança é um problema porque o VBA pode ser utilizado para criar código que pode comprometer a segurança dos seus dados ou danificar ficheiros no seu computador. Quando utiliza uma base de dados criada por alguém além de si próprio, só deve ativar o código VBA se souber que a base de dados provém de uma origem fidedigna. Quando cria uma base de dados que será utilizada por outras pessoas, deve tentar evitar incluir ferramentas de programação que exijam que o utilizador defina a base de dados como fidedigna. Mais à frente nesta secção, encontram-se técnicas gerais para evitar a necessidade de os utilizadores definirem a sua base de dados como fidedigna.

Para ajudar a garantir a segurança da sua base de dados, deve tentar utilizar macros sempre que possível e utilizar a programação VBA apenas para operações que não possam ser executadas com ações de macro. Além disso, deve tentar utilizar apenas ações de macro que, para serem executadas, não exijam que a base de dados seja definida como fidedigna. Limitar a utilização de ações de macro desta forma permite aos utilizadores terem a certeza de que a base de dados não possui programação que poderá danificar os dados ou outros ficheiros nos seus computadores.

Considerações sobre macros

Access contém muitas novas ações de macro que lhe permitem criar macros mais poderosas do que as que pode criar com versões anteriores do Access. Por exemplo, agora pode criar e utilizar variáveis globais temporárias através de ações de macro e pode processar erros mais facilmente com novas ações de macro de processamento de erros. Em versões anteriores do Access, estes tipos de funcionalidades só estão disponíveis através do VBA. Além disso, pode incorporar uma macro diretamente na propriedade do evento de um objeto ou controlo. Uma macro incorporada torna-se parte do objeto ou controlo e permanece com o mesmo se este for movido ou copiado.

As macros proporcionam uma forma fácil de processar várias tarefas de programação, como abrir e fechar formulários e executar relatórios. Pode associar, com rapidez e facilidade, objetos de base de dados (formulários, relatórios, etc.) que criou, uma vez que é necessário memorizar pouca sintaxe. Os argumentos de cada ação são apresentados no Construtor de Macros.

Além de as macros fornecerem uma maior segurança e facilidade de utilização, tem de as utilizar para executar as seguintes tarefas:

  • Atribuir uma ação ou conjunto de ações a uma chave. Neste caso, é necessário criar um grupo de macros denominado AutoKeys.

  • Executar uma ação ou uma série de ações ao abrir uma base de dados pela primeira vez. Neste caso, é necessário criar um grupo de macros denominado AutoExec.

    Nota:  A macro AutoExec é executada antes de qualquer outra macro ou código VBA, mesmo que tenha designado um formulário de arranque na caixa de diálogo Opções do Access e anexado uma macro ou um código VBA aos eventos AoAbrir ou AoCarregar desse formulário.

Para obter mais informações sobre como criar macros, consulte a secção Compreender as macros.

Considerações sobre o VBA

Deve utilizar programação VBA em vez de macros se quiser efetuar qualquer uma das seguintes ações:

  • Utilize funções incorporadas ou crie as suas próprias funções    Access inclui muitas funções incorporadas, como a função IPmt , que calcula um pagamento por juros. Pode utilizar estas funções incorporadas para efetuar cálculos sem ter de criar expressões complicadas. Ao utilizar código VBA, também pode criar as suas próprias funções para executar cálculos que excedam a capacidade de uma expressão ou para substituir expressões complexas. Além disso, pode utilizar as funções que cria em expressões para aplicar uma operação comum a mais do que um objeto.

  • Criar ou manipular objetos    Na maioria dos casos, verá que é mais fácil criar e modificar um objeto na vista Estrutura desse objeto. No entanto, em algumas situações, poderá querer manipular a definição de um objeto no código. Ao utilizar o VBA, pode manipular todos os objetos numa base de dados, para além da própria base de dados.

  • Executar ações ao nível do sistema    Pode executar a ação ExecutarApp numa macro para executar outro programa (como o Microsoft Excel) a partir de Access, mas não pode utilizar uma macro para fazer muito mais fora do Access. Ao utilizar o VBA, pode verificar se existe um ficheiro no computador, utilizar a Automatização ou o Dynamic Data Exchange (DDE) para comunicar com outros programas baseados no Microsoft Windows, como o Excel, e chamar funções em bibliotecas de ligação dinâmica (DLLs) do Windows.

  • Manipular registos um de cada vez    Pode utilizar o VBA para percorrer um conjunto de registos, um registo de cada vez e executar uma operação em cada registo. Por outro lado, as macros funcionam com conjuntos completo de registos ao mesmo tempo.

Início da Página

Utilizar o Assistente de Botões de Comando para efetuar tarefas de programação comuns

Se estiver a adicionar um botão de comando a um formulário, o Assistente de Botões de Comando pode ajudá-lo a começar a programação. O assistente ajuda-o a criar um botão de comando que executa uma tarefa específica. Num ficheiro Access (.accdb), o assistente cria uma macro incorporada na propriedade OnClick do botão de comando. Num ficheiro .mdb ou .adp, o assistente cria código VBA, uma vez que as macros incorporadas não estão disponíveis nesses formatos de ficheiro. Em seguida, em ambos os casos, pode modificar ou melhorar a macro ou o código VBA de acordo com as suas necessidades.

  1. No Painel de Navegação, clique com o botão direito do rato no formulário ao qual quer adicionar o botão de comando e, em seguida, clique em Vista Estrutura.

  2. No separador Estrutura do Formulário , clique na seta para baixo para apresentar a galeria Controlos e, em seguida, certifique-se de que a opção Utilizar Assistentes de Controlo está selecionada.

  3. No separador Estrutura do Formulário , na galeria Controlos , clique em Botão.

  4. Na grelha de estrutura de formulário, clique no local onde quer colocar o botão de comando.

    O Assistente de Botões de Comando é iniciado.

  5. Na primeira página do assistente, clique em cada categoria na lista Categorias para ver as ações que o assistente pode programar para o botão de comando executar. Na lista Ações, selecione a ação que pretende e clique em Seguinte.

  6. Clique nas opções Texto ou Imagem, consoante queira apresentar texto ou uma imagem no botão de comando.

    • Se quiser apresentar texto, pode editá-lo na caixa junto à opção Texto.

    • Se quiser apresentar uma imagem, o assistente sugere uma na lista. Se quiser selecionar uma imagem diferente, selecione a caixa de verificação Mostrar Todas as Imagens para apresentar uma lista de todas as imagens do botão de comando que Access fornece ou clique em Procurar para selecionar uma imagem armazenada noutro local.

      Clique em Seguinte.

  7. Introduza um nome relevante para o botão de comando. Este passo é opcional e o nome não é apresentado no botão de comando. No entanto, é uma boa ideia introduzir um nome relevante para que, quando precisar de fazer referência ao botão de comando mais tarde (por exemplo, se estiver a definir a ordem de tabulação dos controlos no formulário), seja muito mais fácil distinguir os botões de comando. Se, por exemplo, o botão de comando fechar o formulário, pode atribuir-lhe o nome cmdFechar ou ComandoFechar.

  8. Clique em Concluir.

    Access coloca o botão de comando no formulário.

  9. Se quiser ver o que o assistente "programou", siga estes passos opcionais:

    1. Se a folha de propriedades ainda não tiver sido apresentada, prima F4 para a apresentar.

    2. Clique no separador Evento na folha de propriedades.

    3. Na caixa de propriedade Ao Clicar , clique no botão Criar Imagem do botão.

      Access inicia o Construtor de Macros e apresenta a macro que o assistente criou. Se quiser, pode editar a macro (para obter mais informações sobre como editar uma macro, consulte a secção Compreender as macros). Quando tiver terminado, no separador Estrutura da Macro , no grupo Fechar , clique em Fechar para fechar o Construtor de Macros. Se Access lhe pedir para guardar as alterações e atualizar a propriedade, clique em Sim para guardar as alterações ou em Não para rejeitar as alterações.

  10. No separador Estrutura do Formulário , no grupo Vistas , clique em Ver e, em seguida, clique em Vista formulário. Clique no novo botão de comando para confirmar se funciona de acordo com o esperado.

Início da Página

Compreender as macros

Uma macro é uma ferramenta que permite automatizar tarefas e adicionar funcionalidades aos formulários, relatórios e controlos. Por exemplo, ao adicionar um botão de comando a um formulário, associa a propriedade do evento AoFazerClique do botão a uma macro que contém os comandos que pretende que o botão execute sempre que for clicado.

É útil considerar Access macros como uma linguagem de programação simplificada na qual cria código ao criar uma lista de ações a executar. Para criar uma macro, irá selecionar cada ação numa lista pendente e, em seguida, preencherá as informações necessárias para cada ação. As macros permitem-lhe adicionar funcionalidades a formulários, relatórios e controlos sem escrever código num módulo VBA. As macros fornecem um subconjunto dos comandos disponíveis no VBA e a maioria das pessoas considera que é mais fácil criar uma macro do que escrever código VBA.

Pode criar uma macro através do Construtor de Macros, conforme a ilustração abaixo.

O Construtor de Macros do Access 2010

Para apresentar o Construtor de Macros:

  • No separador Criar, no grupo Macros e Código, clique em Macro.

Início da Página

Compreender o código VBA

Tal como as macros, o VBA permite-lhe adicionar automatização e outras funcionalidades à sua aplicação Access. Pode expandir o VBA ao utilizar controlos de terceiros e pode escrever as suas próprias funções e procedimentos de acordo com as suas necessidades específicas.

Uma forma rápida de começar a utilizar a programação VBA é criar primeiro uma macro Access e, em seguida, convertê-la em código VBA. As instruções para o fazer estão incluídas na secção Converter macros em código VBA. Esta funcionalidade cria um novo módulo VBA que executa as operações equivalentes na macro. Além disso, abre também o Visual Basic Editor para que possa começar a modificar o procedimento. Quando estiver a trabalhar no Visual Basic Editor, pode clicar em palavras-chave e premir F1 para iniciar Access Ajuda para Programadores e saber mais sobre cada palavra-chave. Em seguida, pode explorar Access Ajuda para Programadores e descobrir novos comandos para o ajudar a realizar as tarefas de programação que pretende.

Início da Página

Converter macros em código VBA

Pode utilizar Access para converter automaticamente macros em módulos VBA ou módulos de classe. Pode converter macros anexadas a um formulário ou relatório, quer existam como objetos em separado ou como macros incorporadas. Pode também converter macros globais não anexadas a um relatório ou formulário específicos.

Converter macros anexadas a um formulário ou relatório

Este processo converte em VBA todas as macros às quais um formulário ou relatório (ou qualquer um dos respetivos controlos) faça referência (ou em que estejam incorporadas) e adiciona o código VBA ao módulo de classe do formulário ou relatório. O módulo de classe torna-se parte do formulário ou relatório e é movido juntamente com os mesmos, se forem movidos ou copiados.

  1. No Painel de Navegação, clique com o botão direito do rato no formulário ou relatório e, em seguida, clique em Vista Estrutura.

  2. No separador Estrutura do Formulário , no grupo Ferramentas , clique em Converter Macros do Formulário para Visual Basic ou Converter Macros do Relatório para Visual Basic.

  3. Na caixa de diálogo Converter macros de formulário ou Converter macros de relatório , selecione se pretende Access adicionar código de processamento de erros às funções geradas. Além disso, se tiver comentários nas macros, selecione se quer que sejam incluídos como comentários nas funções. Clique em Converter para continuar.

    Se não existir nenhum módulo de classe para o formulário ou relatório, Access cria um e adiciona um procedimento ao módulo para cada macro associada ao formulário ou relatório. Access também altera as propriedades do evento do formulário ou relatório para que executem os novos procedimentos VBA em vez das macros.

  4. Para ver e editar o código VBA:

    1. Com o formulário ou relatório ainda aberto na vista Estrutura, se a folha de propriedades ainda não estiver visível, prima F4 para a apresentar.

    2. No separador Evento da folha de propriedades, clique em qualquer caixa de propriedade que apresente [Procedimento de Evento] e, em seguida, clique no botão de criação Imagem do botão. Para ver as propriedades do evento de um controlo específico, clique no controlo para o selecionar. Para ver as propriedades do evento do formulário ou relatório completos, selecione Formulário ou Relatório na lista pendente, na parte superior da folha de propriedades.

      Access abre o Visual Basic Editor e apresenta o procedimento de evento no módulo de classe. Pode deslocar-se para cima ou para baixo para ver outros procedimentos que se encontrem no mesmo módulo de classe.

Converter macros globais

  1. No Painel de Navegação, clique com o botão direito do rato na macro que pretende converter e, em seguida, clique em Vista Estrutura.

  2. No separador Estrutura da Macro , no grupo Ferramentas , clique em Converter Macros para Visual Basic.

  3. Na caixa de diálogo Converter Macros, selecione as opções pretendidas e, em seguida, clique em Converter.

    Access converte a macro e abre o Visual Basic Editor.

  4. Para ver e editar o código VBA:

    1. No Visual Basic Editor, se o painel Explorador de Projeto não for apresentado, no menu Vista, clique em Explorador de Projeto.

    2. Expanda a árvore sob o nome da base de dados na qual está a trabalhar.

    3. Em Módulos, faça duplo clique no módulo Macro convertida- nome da macro.

      O Visual Basic Editor abre o módulo.

Anexar uma função VBA a uma propriedade do evento

Ao converter uma macro global em VBA, o código do VBA é colocado num módulo padrão. Ao contrário de um módulo de classe, um módulo padrão não faz parte de um formulário ou relatório. Muito provavelmente, irá querer associar a função a uma propriedade do evento num formulário, relatório ou controlo para que o código seja executado exatamente quando e onde quer. Para o fazer, copie o código VBA para um módulo de classe e, em seguida, associe-o a uma propriedade do evento ou faça uma chamada especial da propriedade do evento para o módulo padrão, através do seguinte procedimento.

  1. No Visual Basic Editor, tome nota do nome da função. Por exemplo, se tiver convertido uma macro denominada AMinhaMacro, o nome da função será AMinhaMacro().

  2. Feche o Visual Basic Editor.

  3. No Painel de Navegação, clique com o botão direito do rato no formulário ou relatório ao qual quer associar a função e, em seguida, clique em Vista Estrutura.

  4. Clique na secção ou no controlo a que pretende associar a função.

  5. Se a folha de propriedades ainda não tiver sido apresentada, prima F4 para a apresentar.

  6. No separador Evento da folha de propriedades, clique na caixa de propriedade do evento à qual quer associar a função.

  7. Na caixa de propriedade, escreva um sinal de igual (=) seguido do nome da função como, por exemplo, =AMinhaMacro() . Certifique-se de que inclui os parênteses.

  8. Guarde o formulário ou relatório ao clicar em Guardar na Barra de Ferramentas de Acesso Rápido.

  9. No Painel de Navegação, faça duplo clique no formulário ou relatório e teste-o para verificar se o código é executado conforme previsto.

Agora já conhece os passos básicos para adicionar código VBA à sua base de dados. Este artigo descreve apenas as noções básicas sobre como começar; existem muitos excelentes livros de referência e recursos online que podem ajudá-lo a desenvolver as suas competências de programação.

Consulte Também

Criar uma macro de interface de utilizador (IU)

Executar uma macro do Access utilizando um atalho de teclado

Automatizar eventos de arranque com uma macro

Crie uma macro que é executada quando abre uma base de dados

Ordem dos eventos para objectos de base de dados

Início da Página

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.