VBA

As aplicações do Microsoft Office (Excel ,Word, PowerPoint, Outlook, etc.) suportam automatização de tarefas através do uso da linguagem de programação Visual Basic for Applications (VBA). Com o VBA é possível executar rotinas, também conhecidas como macros, scripts ou códigos.

Esta página é dedicada às pessoas que querem aprender ou se aprofundar em VBA. O material listado aqui atende pessoas que nunca tiveram contato com VBA assim como desenvolvedores com experiência. Montei esta página especialmente para você ter uma visão geral do que é o VBA, quais são as vantagens e desvantagens de usá-lo, meus comentários gerais sobre essa ferramenta de desenvolvimento e, por fim, ensinar-lhe a programar. Os tópicos que apresentados estão listados a seguir, e estou repondo as páginas desta seção aos poucos:

Visual Basic Editor (VBE)

Estados do VBE

Segurança de Macros

Módulos

Sintaxe do VBA

Indentação

Procedimentos

Subprocedimentos

Variáveis e Constantes

Escopo de Variáveis

Tipos de Dados

Enumerações

Vetores

Argumentos e Parâmetros

Funções

O Básico de Programação em VBA

Para utilizar o VBA num aplicativo Office você não precisa fazer nada de especial, já que normalmente suas bibliotecas são incluídas e habilitadas na instalação padrão do Microsoft Office.

O Office para Windows Surface RT, Office Web Apps (online), Office Starter 2010 e Office para qualquer smartphone não suportam VBA.

Por que Usar VBA?

Existem mais de 500 milhões de usuários de Microsoft Office no mundo. Ele é, sem dúvidas, o pacote de produtividade mais bem sucedido já criado. O Office oferece uma flexibilidade muito grande, e cada usuário o utiliza conforme suas necessidades. O mercado de trabalho hoje exige conhecimentos em Office e desenvolver em VBA é um diferencial.

Infelizmente, as ferramentas do Office são subexploradas, e uma de suas funcionalidades mais poderosas e interessantes é sua capacidade de criar automatização de tarefas atrás da programação VBA. As ferramentas nativas do Office são excelentes, mas com o VBA, você consegue alcançar resultados que não conseguiria se usasse somente ferramentas nativas ou gastaria muito tempo. Exemplos:

  • No Excel: renomear dezenas de planilhas sequencialmente de uma pasta de trabalho de acordo com o valor de uma célula;
  • No Word: colorir de azul a primeira palavra de todos os parágrafos de um texto.
  • No Outlook: Salvar com um clique os remetentes de um e-mail que tem vários destinatários em sua pasta de contatos.
  • No PowerPoint: Criar uma apresentação que exiba um formulário e que o próximo slide utilize as informações preenchidas para construir o próximo slide.

O VBA pode integrar um aplicativo Office com outro. Por exemplo: você pode criar um programa em Excel que exporta algumas tabelas numa apresentação de PowerPoint e envie essa Apresentação por e-mail via Outlook. Na verdade, você pode criar sistemas inteiros usando o VBA, a exemplo dos vários sistemas existentes hoje em Microsoft Access.

Existe outra grande vantagem: a sintaxe da linguagem VBA para o Excel é a mesma para os outros aplicativos Office. Então, se você aprender bem VBA para Excel, já é meio caminho para aprender o VBA no Word, porque dessa forma seu estudo se concentrará em aprender como o VBA interage com os objetos do Word.

O VBA pode estar presente em todos os lugares, desde no Word instalado num escritório de advocacia, no PowerPoint do estudante colegial até no Excel das empresas multinacionais. Se dominar o VBA, você pode operar qualquer computador com o Microsoft Office e começar a desenvolver, sem precisar instalar nenhum recurso adicional.

Embora o Office evolua e sofra modificações a cada novo lançamento, o VBA possui uma ótima compatibilidade entre as versões. Existem códigos VBA que foram criados no Excel 97 que rodam sem problemas no Excel 2013.

E o principal: o VBA é fácil e divertido de aprender!

Se você usa Office para Mac, BrOffice, LibreOffice ou qualquer outro tipo de pacote de produtividade, terá uma péssima experiência no VBA. Se quiser aproveitar ao máximo o que o VBA pode oferecer, utilize o Microsoft Office para Windows.

Quem Usa ou Deve Usar o VBA?

O perfil dos desenvolvedores de VBA é pode ser diferente do perfil de um típico programador. Um profissional do ramo de TI, normalmente, não desenvolve seus programas em VBA: ele utiliza um computador com configurações de hardware acima da média e softwares específicos para desenvolvimento e sua profissão é desenvolver programas. Por outro lado, existem milhões de desenvolvedores de VBA que são contadores, engenheiros, advogados, médicos, orçamentistas e muitos outros profissionais dos mais variados segmentos.

Por esse motivo, o VBA tem que ser uma ferramenta de desenvolvimento simples para resolver problemas práticos desses profissionais que não são desenvolvedores dedicados, e sua curva de aprendizado não pode ser complicada. É uma ferramenta de apoio para sua profissão que irá aumentar sua produtividade e poupar de fazer tarefas manuais, tediosas e susceptíveis ao erro humano.

Se você utiliza algum software do Microsoft Office diariamente e quer extrair o máximo em produtividade, deve aprender VBA. Isso tornará seu trabalho mais eficiente e, o melhor, mais interessante. Ao desenvolver em VBA sua forma de pensar em como organizar seus documentos irá evoluir.

As políticas de segurança da informação das empresas estão controlando cada vez mais o que seus funcionários podem acessar. Se a empresa em que trabalha proíbe acesso à internet, pen drives e e-mail, pode ser que sua única opção para automatizar suas tarefas seja através do VBA.

É essencial que o seu inglês esteja bom para aprender VBA: todos comandos são em inglês, assim como muitos recursos de ajuda disponíveis em livros e na Internet.

Vantagens e Desvantagens do VBA

O VBA está ultrapassado. Linguagem do século XX… Tem até GoTo! Que piada!

O VBA é um lixo, linguagem estruturada, gambiarrado e nem orientado a objetos ele é!

É verdade que você não vai conseguir criar um sistema de banco ou jogos para celular usando o VBA. Assim como qualquer linguagem de programação, o VBA tem suas vantagens e desvantagens. Não estou aqui para defender o VBA, mas se você acreditar que vale a pena dedicar tempo e energia no VBA, é um bom começo.

Não se deixe levar pelos falastrões dos cursos de tecnologia, que são como advogados recém-formados que já acham que são juízes. A maioria deles não sabe de nada de desenvolvimento, nem mesmo as próprias ferramentas que estudaram na faculdade. Pergunte a eles para que o VBA foi criado e eles não saberão responder.

Vantagens

O VBA foi criado para resolver problemas e expandir as funcionalidades dos aplicativos do Microsoft Office. Então, para querer aprender VBA, você já tem que ter um conhecimento pelo menos básico do aplicativo Office que você usa, como Word, Excel, PowerPoint ou Outlook. É muito difícil simpatizar com o VBA se você não usa o Microsoft Office.

O VBA precisa de poucas linhas de código para resolver um problema de um aplicativo Office que, se fizesse por outra linguagem, levaria dezenas de linhas. E mais: o ambiente de desenvolvimento de VBA já vem integrado ao aplicativo que você quer automatizar, enquanto que outra solução necessitaria instalar um software extra no computador. Você pode ligar qualquer computador que possua Office e começar a desenvolver em VBA, mas em outras linguagens de programação, não.

Mesmo que você não desenvolva em VBA futuramente, não terá perdido tempo. O VBA é uma ótima porta de entrada no mundo de desenvolvimento de software para pessoas que não tem formação em TI. Além disso, umas das linguagens de programação mais utilizadas no mercado atualmente, o VB.NET é uma evolução do VBA, e hoje ela é utilizada em vários segmentos como desenvolvimento de aplicações web, jogos para celulares, sistemas ERP e muito mais. O VBA apresenta muita semelhança com o VB.NET.

Uma grande vantagem do VBA é a velocidade em que se constroem programas: é muito rápido o processo de escrever, testar e executar. Quando escrevemos um programa e vamos executa-lo, normalmente temos que esperar um tempo em que a máquina virtual do ambiente de desenvolvimento converte seu código para linguagem de máquina (chamado de tempo de compilação). Á medida que a linguagem de programação se torna mais complexa, esse tempo aumenta. No VBA, esse tempo é quase zero. Para fazer scripts e testes rápidos, ele é imbatível! Além disso, ele já está integrado na aplicação que você quer automatizar, e então não é preciso importar nem desenvolver códigos extras que apontem para o aplicativo desejado.

Desvantagens

A Microsoft até já até quis cantar a pedra que iria remover o VBA do Office em versões futuras, mas a reação contra da comunidade foi tão forte que ela garantiu que irá manter o VBA no Office por tanto tempo que seja necessário. Pode ficar tranquilo porque ele não será descontinuado.

Infelizmente, o VBA não recebe atualizações significativas desde 1999 e não vejo planos da Microsoft querer inova-lo, o que é uma incrível burrice da empresa, e quem tomou essa decisão lá dentro deve ser um doido. Então, usando o VBA, você estará trabalhando com uma ferramenta que é praticamente a mesma há 15 anos porque foi abandonada pelo fabricante.

O VBA não vive sem um aplicativo Office. Você pode até fazer macros que interajam com outros programas que não sejam da Microsoft, mas você sempre irá precisar de um aplicativo do Office para executa-lo. Uma das consequências disso é que o VBA não gera programas executáveis exe.

Um documento Office incorpora em si as macros que utiliza. Então, se você criar uma planilha automatizada e distribuir sua pasta de trabalho para outras pessoas e no dia seguinte perceber que há uma falha no código, terá que entrar em contato com cada uma dessas pessoas e reenviar o novo arquivo com o código correto. Se um dos remetentes já tiver trabalhado no documento anterior, terá que refazer o serviço no documento correto. Claro, esse é um típico problema fácil de contornar, mas os rementes envolvidos devem ter pelo menos um conhecimento básico no gerenciamento de projetos VBA de um documento, o que normalmente não acontece.

Na maior parte das vezes, você irá querer que o VBA trabalhe orientado a eventos ou que atue como um interpretador de scripts. No entanto, o VBA não é uma linguagem plenamente orientada a objetos. A consequência disso é que ele não suporta algumas propriedades desse paradigma, como por exemplo, a ausência ou deficiência de herança, polimorfismo e pacotes (namespaces).

Aprendendo a Programar em VBA

Programas em VBA executam um conjunto de instruções dentro de procedimentos. Os procedimentos, por sua vez, ficam em módulos. Os módulos são componentes que integram um projeto. O nome do ambiente em que visualizamos e criamos tudo isso e muito mais é Visual Basic Editor (VBE). Leia as páginas abaixo em sequência:

Outros Recursos de Aprendizagem

Um dos motivos de eu ter criado esse site foi não ter encontrado muito material gratuito e de qualidade sobre Microsoft Office e VBA em português. Então, como basicamente todo meu aprendizado foi obtido através de recursos em inglês, o conteúdo de estudo que indico abaixo é também todo em inglês (exceto nos fóruns).

Observa-se um excesso de material de VBA para Access e Excel e uma escassez para os outros aplicativos do Office, devido às maiores desses de serem automatizados. Se sua dúvida for referente ao VBA de PowerPoint, por exemplo, pode ser difícil encontrar o que busca, mas não se desanime: o VBA está na praça desde 1994, logo, pode ser que você encontre o que precisa na internet ou em livros.

As sugestões estão por ordem de minha preferência. São sites, livros e fóruns que consulto até hoje.

Varie as formas de estudar: deverá, obrigatoriamente, ler um livro. Sites e blogs são usados para estudar uma funcionalidade específica. No entanto, a participação dos fóruns é essencial. Primeiro, tente responder as perguntas. Depois, compare sua resposta com a resposta de alguém mais experiente.

Livros

Excel:

Excel 2013 Power ProgrammingJohn Walkenbach.

Excel 2007 Programmer’s ReferenceJohn Green, Rob Bovey, Stephen Bullen e Michael Alexander.

Access:

Access 2010 Programmer’s ReferenceTeresa Hennig, Rob Cooper, Geoffrey L. Griffith e Jerry Dennison.

PowerPoint:

Powerful PowerPoint for Educators: Using Visual Basic for Applications to Make PowerPoint Interactive, Second EditionDavid M. Marcovitz.

Sites

Excel:

Chip Pearson.

Word:

Word MVP FAQs.

PowerPoint:

PPT FAQ.

Fóruns

Fóruns em português:

O fórum oficial da Microsoft sobre VBA do Brasil é o que mais frequento. Respondo praticamente todas as perguntas postadas lá e convido-os para tirar qualquer dúvida ou me ajudar a responder as perguntas: http://social.msdn.microsoft.com/Forums/pt-BR/home?forum=vbapt

Fóruns em inglês:

VBA Express.

VBA MSDN.

  • RAPHAEL BONILLO

    Felipe, ótimo trabalho. Salvo engano, este Site não tem todo conteúdo do antigo? Estou certo? De qualquer forma, parabéns!

    • Você está certo, Raphael, me desculpe.
      No entanto, estou voltando o conteúdo aos poucos.
      Clique na página “Sobre” para acessar todo conteúdo antigo.

      • RAPHAEL BONILLO

        Obrigado, Felipe.

  • Mario Franca

    Estou simplesmente fascinado pela facilidade da programação VBA !!

  • Felipe Cardoso

    Felipe, parabéns pelo trabalho! Gostaria de aproveitar e perguntar. você tem uma lista completa com os comandos do VBA no MSWord?