Desenvolvimento - Office

Tutorial de Programação VBA - Access - Parte 1

Este é o primeiro de uma série de tutoriais sobre a Programação VBA – Visual Basic for Application, no Access.

por Júlio Cesar Fabris Battisti



Objetivos:

Este é o primeiro de uma série de tutoriais sobre a Programação VBA - Visual Basic for Application, no Access. O objetivo é mostrar como utilizar a programação VBA para solucionar problemas complexos no Access, problemas que muitas vezes não tem como ser resolvidos sem o uso de programação.

Programação com o Microsoft Access - Por que utilizar?

O VBA nos oferece possibilidades de controle e personalização para criar aplicativos que vão além do que é possível de ser feito usando apenas Macros.

O VBA é uma linguagem de programação interna do Microsoft Access (na prática é a linguagem de programação para todos os aplicativos do Office: Access, Word, Excel e Power Point). Usamos o VBA pelo mesmo motivo que utilizamos macros - para automatizar tarefas e rotinas repetitivas, envolvendo os diversos elementos do banco de dados (tabelas, consultas, formulários, relatórios, folhas de dados, macros e módulos). No entanto, o VBA oferece maior poder e controle mais detalhado do que as ações de macro.

Na prática as ações de macro duplicam as operações que podemos realizar manualmente, usando menus e teclas de atalho. O VBA vai além da simples automação de seqüências de ações de teclado e menus de comandos. O VBA oferece um conjunto de ferramentas que lhe permite criar aplicações personalizadas com base nos elementos do Access e nos objetos dos bancos de dados do Access. Por exemplo, podemos criar uma rotina em VBA em um banco de dados chamado local.mdb. Esta rotina pode acessar dados em um segundo banco de dados que está na rede, por exemplo, pagamentos.mdb. A mesma rotina além de acessar os dados pode fazer cálculos, consolidações, gerar os resultados no formato de uma planilha do Excel e salvar a planilha na rede ou em uma página da Intrante da empresa, no formato HTML. Este é apenas um pequeno exemplo do que pode ser feito como o VBA.

Vantagens em utilizarmos o VBA:

No Curso de Access Avançado e VBA, você aprende a utilizar macros para automatizar algumas tarefas como a aplicação de filtros em formulários, sincronização de formulários, etc. O VBA apresenta, em relação às macros, as seguintes vantagens:

  • Acessando um ou mais conjuntos de registros: Com ações de macros estamos limitados a operar com o registro ou com o conjunto de registros atualmente sendo exibido em um formulário, relatório ou consulta. O VBA lhe permite trabalhar com qualquer conjunto de registros no banco de dados ativo (arquivo .mdb que você está trabalhando) ou em outras banco de dados e, inclusive, com vários conjuntos de registros ao mesmo tempo. Por exemplo, você pode montar uma rotina VBA, associada a um formulário de entrade de pedidos, a qual faz a baixa dos produtos vendidos, automaticamente, na tabela de estoque.

  • Manipulação de objetos: O VBA oferece métodos de criação e modificação dos objetos de um banco de dados do Microsoft Access. Chamamos de objeto qualquer elemento do Microsoft Access, por exemplo: uma tabela, uma consulta, um formulário, relatório, etc. Por exemplo, poderíamos usar o VBA para acessar um conjunto determinado de registros, através da execução de um comando SQL (Veja o Tutorial de SQL no Access) para a geração de um objeto do tipo RecordSet. Aprenderemos o objeto RecordSet, em detalhes, nas próximas partes deste tutorial.

  • Criação de funções definidas pelo usuário: Este é um dos maiores benefícios do VBA. Podemos criar funções que executam cálculos repetitivos ou cálculos para os quais o Access não dispõem de uma função pronta. Por exemplo, vários formulários podem conter um campo CPF ou CNPJ. Poderíamos criar, em cada formulário, o código necessário para a validação do DV do CPF ou CNPJ. Porém este procedimento não é o mais indicado, pois além da duplicação do código necessário à validação do CPF ou CNPJ, teríamos dificuldades para fazer atualizações neste código, pois cada alteração teria que ser feita em vários locais. O ideal é criarmos uma função para validação do DV (uma função deve ser criada dentro de um módulo. Trataremos disso nas próximas partes deste tutorial.). Em cada formulário, onde for necessário, chamamos a função, passando o valor do campo CPF ou CNPJ como parâmetro. A função calcula o DV e retorna o resultado para o furmulário. Desta maneira precisamos criar uma única função. Quando forem necessárias alterações, basta alterar a função (em um único local, ou seja, no módulo onde a função foi criada)e todos os formulários passarão a utilizar a versão atualizada da função.

  • Definição de condições e controle de fluxo: O VBA oferece uma variedade de comandos e estruturas para a realização de testes condicionais e para a repetição de um conjunto de comandos. Aprenderemos a utilizar todas as estruturas de controle de fluxo e testes condicionais, mais adiante.

  • Realização de cálculos complexos e solução de problemas que envolvem uma lógica complexa: Com macros é impossível a realização de cálculos mais complexos. Com Macros não é possível a resolução de problemas que envolvem uma lógica complexa, como por exemplo cálculo do imposto de renda, recolhimentos de tributos, etc.

Introdução a linguagem VBA - Visual Basic For Applications

O VBA teve origem no Visual Basic. O Visual Basic é um ambiente de desenvolvimento completo, onde podemos criar programas para o ambiente Windows. Um programa como o Programa Para Declaração de Imposto de Renda da Pessoa Física, pode ser criado utilizando-se o Visual Basic. Um aplicativo como o Winzip ou como um sistema para controle de clientes e de vendas, também poderia ser criado utilizando o Visual Basic. Já o VBA é uma linguagem bastante poderosa, embora não seja tão poderosa quanto o Visual Basic, para criação de aplicativos e automação de tarefas, baseados nos aplicativos do Microsoft Office: Access, Word, Excel, PowerPoint e Outlook.

É importante entender que existe uma diferença fundamental entre o Visual Basic e o VBA: Com o Visual Basic é possível criar os programas executáveis, ou seja, você cria o programa e gera os arquivos de instalação. Nos arquivos de instalação estão todos os recursos necessários à instalação e ao funcionamento do programa. Já com o VBA não é possível criar programas escutáveis. As rotinas de programação criadas com o VBA tem que ser executadas dentro de um dos aplicativos do Office, como por exemplo o Access, Excel, Word, PowerPoint ou Outlook.

Onde podemos utilizar o VBA?

Existem, basicamente, duas situações/locais diferentes onde podemos utilizar o VBA:

  • Como resposta a um evento: Conforme descrito no Curso de Access Avançado e VBA, o modelo de programação do ambiente Windows é baseado em Eventos. Um Evento é uma ação do usuário ao utilizar o teclado ou o mouse. Por exemplo, quando o usuário clica em um botão de comando é gerado o evento "Ao clicar" associado com este botão. Quando o usuário altera o valor em um campo de dados e pressiona a tecla TAB para ir para o próximo campo são gerados dois eventos associados com o campo que foi atualizado: "Após atualizar" e "Ao perder o foco". Ah, também será gerado o evento "Ao receber o foco", associado com o capo para o qual foi posicionado o cursor. Quando o usuário dá um clique duplo em um determinado elemento de uma tela do Windows, é disparado o evento "Ao clicar duas vezes", e assim por diante. Por padrão nenhuma ação é programada para responder aos eventos que são disparados. Conforme já vimos no Curso de Access Avançado e VBA, é possível criar macros que serão executadas em resposta a um determinado evento. Podemos utilizar o VBA para criar um procedimento (um procedimento é formado por um ou mais comandos e pode ser do tipo Sub-procedimento ou Função, conforme descreverei em uma das próximas partes deste tutorial) que será executado em resposta ao evento. Por exemplo, podemos criar um procedimento para validar um número de CPF (calcular o DV do CPF). Este procedimento pode ser configurado para ser executado em resposta ao evento Após atualizar do campo CPF. O código criado para ser executado em resposta a um evento, é gravada juntamente com o formulário (ou relatório), onde está o elemento que dispara o evento.

  • Criação de funções e procedimentos em módulos separados: Se quisermos criar procedimentos ou funções que não estejam ligados a um evento específico em um formulário ou relatório (podendo, porém serem chamados em diversos eventos diferentes, conforme visto no Curso de Access Avançado e VBA), podemos criar funções gravadas em Módulos do Access. Um Módulo é um objeto do Access cuja única finalidade é armazenar código de procedimentos e funções do VBA. Quando um procedimento ou função é definido e armazenado em um módulo, podemos usá-lo em qualquer expressão, como se fosse uma função interna do Microsoft Access ou chamá-lo em resposta a um evento. Nas próximas partes deste tutorial, criaremos, a título de exemplo, uma função chamada MêsPorExtenso. Esta função receberá um valor numérico entre 1 e 12 e irá retornar o nome do mês correspondente, por extenso.

Agora que já falei bastante e fiz uma boa propaganda das vantagens em se utilizar o VBA para programação no Microsoft Access, é hora de aprendermos os fundamentos básicos desta linguagem de programação. Bem, isso já fica para a Parte 2 deste tutorial.

Conclusão:

Nesta primeira parte fiz apenas uma apresentação do que é a linguagem VBA e quando podemos utilizá-lo, bem como dos tipos de problemas que podem ser solucionados, usando o VBA. A partir da próxima parte deste tutorial, você começará a aprender os fundamentos da programação VBA no Access.

Júlio Cesar Fabris Battisti

Júlio Cesar Fabris Battisti