Introdução ao VBA no Office
Você está enfrentando uma limpeza repetitiva de cinquenta tabelas no Word? Você deseja que um documento específico solicite que o usuário forneça informações quando ele for aberto? Você está tendo dificuldade para saber como colocar seus contatos do Microsoft Outlook em uma planilha do Microsoft Excel de maneira eficiente?
Você pode executar essas tarefas e realizar muito mais usando Visual Basic for Applications (VBA) para o Office — uma linguagem de programação simples, mas poderosa que você pode usar para estender aplicativos do Office.
Este artigo é indicado para usuários experientes do Office que querem aprender sobre o VBA e para quem deseja entender um pouco sobre como a programação pode ajudar na personalização do Office.
O pacote de aplicativos do Office tem um sofisticado conjunto de recursos. Há muitas maneiras diferentes de criar, formatar e manipular documentos, emails, bancos de dados, formulários, planilhas e apresentações. A grande vantagem da programação em VBA no Office é que quase todas as operações que podem ser executadas com um mouse, teclado ou uma caixa de diálogo também podem ser realizadas usando o VBA. Além disso, se a operação pode ser realizada uma vez com o VBA, ela pode ser feita com a mesma facilidade centenas de vezes. Na verdade, a automatização de tarefas repetitivas é um dos usos mais comuns do VBA no Office.
Além da capacidade de criar scripts com o VBA para acelerar as tarefas diárias, use o VBA para adicionar novas funcionalidades a aplicativos do Office ou solicitar e interagir com as pessoas que usam seus documentos de formas específicas para atender às suas necessidades de negócios. Por exemplo, você poderia gravar um código VBA que exibisse um mensagem popup lembrando os usuários de salvar um documento em uma determinada unidade de rede na primeira vez que eles tentassem salvá-lo.
Este artigo explora algumas das principais razões para aproveitar a capacidade de programação em VBA. Ele explora a linguagem VBA e as ferramentas prontas que podem ser usadas para trabalhar com suas soluções. Por fim, ele inclui algumas dicas e formas de evitar algumas frustrações e equívocos comuns que acontecem na programação.
Observação
Interessado em desenvolver soluções que ampliem a experiência do Office em várias plataformas? Confira o novo modelo de Suplementos do Office. Os suplementos do Office ocupam um pequeno espaço em comparação com os suplementos e as soluções do VSTO, e você pode criá-los usando quase qualquer tecnologia de programação da Web, como o HTML5, JavaScript, CSS3 e XML.
Quando e por que usar o VBA
Há três razões principais para considerar a programação em VBA no Office.
Automação e repetição
O VBA é eficiente quando se trata de soluções repetitivas para problemas de formatação ou correção. Por exemplo, você já alterou o estilo do parágrafo no topo de cada página no Word? Você já precisou reformatar várias tabelas que foram coladas do Excel em um documento do Word ou em um email do Outlook? Você já precisou fazer a mesma alteração em vários contatos do Outlook?
Se existe uma alteração que precisa ser feita mais de dez ou vinte vezes, talvez valha a pena automatizá-la com o VBA. Se é uma alteração que precisa ser feita centenas de vezes, merece sem dúvida ser considerada. Quase todas as alterações de formatação ou de edição que podem ser feitas manualmente podem ser feitas no VBA.
Extensões para a interação do usuário
Há ocasiões em que você deseja incentivar ou obrigar os usuários a interagir com um documento ou aplicativo do Office de determinada forma que não faça parte do aplicativo padrão. Por exemplo, você pode pedir aos usuários para executar uma ação específica ao abrir, salvar ou imprimir um documento.
Interação entre aplicativos do Office
Você precisa copiar todos os seus contatos do Outlook para o Word e, em seguida, formatá-los de alguma maneira específica? Ou precisa mover dados do Excel para um conjunto de slides do PowerPoint? Às vezes, o simples ato de copiar e colar não produz o resultado desejado ou é muito lento. Use a programação VBA para interagir com os detalhes de dois ou mais aplicativos do Office ao mesmo tempo e modifique o conteúdo de um aplicativo com base no conteúdo de outro.
Fazendo as coisas de outra forma
A programação em VBA é uma solução poderosa, mas nem sempre é a melhor abordagem. Às vezes, faz sentido usar outros recursos para atingir seus objetivos.
A principal pergunta a ser feita é se há uma maneira mais fácil. Antes de começar um projeto do VBA, considere as ferramentas internas e as funcionalidades padrão. Por exemplo, se você tem em mãos uma tarefa demorada de layout ou edição, considere o uso de estilos ou teclas aceleradoras para solucionar o problema. É possível executar a tarefa uma vez e depois usar Ctrl+Y (Refazer) para repeti-la? É possível criar um novo documento com o formato ou modelo correto e, em seguida, copiar o conteúdo para esse novo documento?
Os aplicativos do Office são poderosos. A solução de que você precisa talvez já esteja disponível. Dedique algum tempo para saber mais sobre o Office antes de começar a programar.
Antes de começar um projeto VBA, verifique se você tem tempo para trabalhar com o VBA. Programar requer foco e pode ser imprevisível. Especialmente se for iniciante, nunca comece a programar a menos que você tenha tempo para trabalhar com toda a atenção. Tentar gravar um "script rápido" para resolver um problema quando uma data limite se aproxima pode levar a situações muito estressantes. Se você está com pressa, use métodos convencionais, mesmo que sejam monótonos e repetitivos.
Programação em VBA 101
Usando códigos para fazer com que aplicativos realizem tarefas
Você pode achar que escrever códigos é algo misterioso ou difícil, mas os princípios básicos usam raciocínios comuns e são bastante acessíveis. Os aplicativos do Microsoft Office são criados de forma a expor itens chamados objetos. Esses itens podem receber instruções da mesma forma que um telefone faz quando você usa seus botões. Quando você pressiona um botão, o telefone reconhece a instrução e inclui o número correspondente na sequência que você está discando. Em programação, você interage com o aplicativo enviando instruções a vários objetos no aplicativo. Esses objetos são expansivos, mas têm limites. Eles só podem fazer aquilo que foram projetados para fazer e farão apenas o que você os instruir a fazer.
Por exemplo, pense em um usuário que abre um documento no Word, faz algumas alterações, salva o documento e, em seguida, fecha-o. No mundo da programação em VBA, o Word expõe um objeto Document. Usando o código VBA, você pode instruir o objeto Document a fazer coisas como abrir, salvar ou fechar.
A seção a seguir discute como os objetos são organizados e descritos.
O modelo de objeto
Desenvolvedores organizam os objetos de programação em uma hierarquia chamada de modelo de objeto do aplicativo. O Word, por exemplo, tem um objeto Application de nível superior que contém um objeto Document. O objeto Document contém objetos Paragraph e assim por diante. Os modelos de objeto espelham praticamente aquilo que você vê na interface do usuário. Eles são um mapa conceitual do aplicativo e seus recursos.
A definição de um objeto é chamada de classe, portanto, você pode ver esses dois termos. Tecnicamente, uma classe é a descrição ou o modelo usado para criar, ou instanciar, um objeto.
Depois que um objeto existe, é possível manipulá-lo definindo suas propriedades e chamando seus métodos. Se você pensar no objeto como um substantivo, as propriedades são os adjetivos que descrevem o substantivo e os métodos são os verbos que dão vida ao substantivo. Ao alterar uma propriedade, você altera algumas qualidades da aparência ou do comportamento do objeto. Chamar um dos métodos do objeto faz com que o objeto execute alguma ação.
O código VBA neste artigo é executado em um aplicativo aberto do Office em que muitos dos objetos que o código manipula já se encontram em execução. Por exemplo, os objetos Application, Worksheet no Excel, Document no Word, Presentation no PowerPoint, Explorer e Folder no Outlook. Após conhecer o layout básico do modelo de objeto e algumas propriedades importantes de Application que dão acesso ao seu estado atual, é possível começar a estender e manipular esse aplicativo do Office com o VBA no Office.
Métodos
No Word, por exemplo, você pode alterar as propriedades e chamar os métodos do documento atual do Word, usando a propriedade ActiveDocument do objeto aplicativo. Essa propriedade ActiveDocument retorna uma referência para o objeto documento que está ativo no aplicativo do Word. "Retorna uma referência para" significa "oferece acesso a".
O código a seguir faz exatamente aquilo que ele diz, ou seja, salva o documento ativo no aplicativo.
Application.ActiveDocument.Save
Leia o código da esquerda para a direita: "Neste Aplicativo, com o Documento referenciado pelo ActiveDocument, invoque o método Salvar ". Esteja ciente de que Salvar é a forma mais simples do método; não requer instruções detalhadas de você. Você instrui um objeto documento para Salvar, e ele não exige mais informações.
Quando um método exige mais informações, esses detalhes são chamados de parâmetros. O código a seguir executa o método SaveAs, que exige um novo nome para o arquivo.
Application.ActiveDocument.SaveAs ("New Document Name.docx")
Os valores listados entre parênteses após o nome de um método são os parâmetros. Aqui, o novo nome do arquivo é um parâmetro do método SaveAs.
Propriedades
Você usa a mesma sintaxe para definir uma propriedade usada para ler uma propriedade. O código a seguir executa um método para selecionar a célula A1 no Excel e, em seguida, definir uma propriedade para colocar algo nessa célula.
Application.ActiveSheet.Range("A1").Select
Application.Selection.Value = "Hello World"
O primeiro desafio na programação em VBA é ter uma noção do modelo de objeto de cada aplicativo do Office e ler a sintaxe do objeto, do método e da propriedade. Os modelos de objeto são semelhantes em todos os aplicativos do Office, mas são específicos para os tipos de documento e objetos manipulados por eles.
Na primeira linha do trecho de código, há o objeto Aplicativo, aqui representado pelo Excel, e, em seguida, o ActiveSheet, que fornece acesso à planilha ativa. Depois disso é um termo não tão familiar, Range, que significa "definir um intervalo de células dessa maneira". O código instrui Range a criar-se com apenas A1 como seu conjunto definido de células. Em outras palavras, a primeira linha do código define um objeto, Intervalo, e executa um método em relação a ele para selecioná-lo. O resultado é armazenado automaticamente em outra propriedade do Aplicativo chamada Seleção.
A segunda linha do código define a propriedade Valor de Seleção para o texto "Olá, Mundo", e esse valor é exibido na célula A1.
O código VBA mais simples gravado pode meramente obter acesso aos objetos no aplicativo do Office no qual você está trabalhando e definir propriedades. Por exemplo, você poderia obter acesso às linhas em uma tabela do Word e alterar sua formatação no script do VBA.
Isso parece simples, mas pode ser incrivelmente útil. Após gravar esse código, aproveite toda a capacidade da programação para fazer essas mesmas alterações em várias tabelas ou documentos ou para criá-las de acordo com alguma lógica ou condição. Para um computador, realizar 1.000 ou 10 alterações é a mesma coisa, portanto, aqui não é preciso economizar na escala em documentos e problemas de maiores dimensões. É nesse quesito que o VBA realmente se destaca e economiza seu tempo.
Macros e o Editor do Visual Basic
Agora que já tem algumas informações sobre como os aplicativos do Office expõem seus modelos de objeto, é provável que você esteja ansioso para tentar chamar métodos de objeto, definir propriedades de objetos e responder a eventos de objeto. Para fazer isso, você precisa gravar seu código em um lugar e de uma forma que o Office possa entender. Isso é geralmente feito usando o Editor do Visual Basic. Embora seja instalado por padrão, muitos usuários não sabem que ele está disponível até que seja habilitado na faixa de opções.
Todos os aplicativos do Office usam a faixa de opções. Uma das guias da faixa de opções é a guia Desenvolvedor, onde você acessa o Editor do Visual Basic e outras ferramentas de desenvolvedor. Como o Office não exibe a guia Desenvolvedor por padrão, você deve habilitá-la usando o seguinte procedimento:
Para habilitar a guia Desenvolvedor
Na guia Arquivo, escolha Opções para abrir a caixa de diálogo Opções.
Clique em Personalizar a Faixa de Opções no lado esquerdo da caixa de diálogo.
Em Escolher comandos a partir de no lado esquerdo da caixa de diálogo, selecione Comandos Populares.
Em Personalizar a Faixa de Opções no lado direito da caixa de diálogo, escolha Guias Principais no menu suspenso da caixa de listagem e marque a caixa de seleção Desenvolvedor.
Escolha OK.
Observação
No Office 2007, a guia Desenvolvedor foi exibida clicando no botão do Office, em Opções, e, em seguida, marcando a caixa de seleção Mostrar guia Desenvolvedor na Faixa de Opções na categoria Popular da caia de diálogo Opções.
Após habilitar a guia Desenvolvedor, fica fácil localizar os botões Visual Basic e Macros.
Figura 1. Botões na guia Desenvolvedor
Problemas de segurança
Para proteger os usuários do Office contra vírus e códigos de macro perigosos, não é possível salvar o código de macro em um documento padrão do Office que usa uma extensão de arquivo padrão. Em vez disso, você deve salvar o código em um arquivo com uma extensão especial. Por exemplo, você não pode salvar as macros em um documento padrão do Word com uma extensão .docx. Em vez disso, você deve usar um Documento Habilitado para Macro do Word especial com uma extensão .docm.
Ao abrir um arquivo .docm, a segurança do Office ainda pode evitar que as macros no documento sejam executadas, informando você sobre isso ou não. Examine as configurações e opções da Central de Confiabilidade em todos os aplicativos do Office. A configuração padrão desabilita a execução da macro, mas informa você que a macro foi desabilitada e oferece a opção de ativá-la novamente para o documento.
Ao criar Locais Confiáveis, Documentos Confiáveis ou Fornecedores Confiáveis, é possível designar pastas específicas onde as macros podem ser executadas. A opção de maior portabilidade é usar Fornecedores Confiáveis que funcionam com documentos assinados digitalmente distribuídos por você. Para ver mais informações sobre as configurações de segurança em um aplicativo específico do Office, abra a caixa de diálogo Opções, clique em Central de Confiabilidade e, em seguida, clique em Configurações da Central de Confiabilidade.
Observação
Alguns aplicativos do Office, como o Outlook, salvam macros por padrão em um modelo mestre no computador local. Embora essa estratégia reduza os problemas locais de segurança em seu próprio computador ao executar suas próprias macros, ela exige uma estratégia de implantação se você quiser distribuir sua macro.
Gravando uma macro
Quando você clica no botão Macro na guia Desenvolvedor, a caixa de diálogo Macros é exibida e dá acesso às sub-rotinas ou macros do VBA que podem ser acessadas de um determinado documento ou aplicativo. O botão Visual Basic abre o Editor do Visual Basic, onde você pode criar e editar o código do VBA.
Outro botão presente na guia Desenvolvedor no Word e Excel é o botão Gravar Macro que gera automaticamente um código VBA que pode reproduzir as ações executadas no aplicativo. Gravar Macro é uma ótima ferramenta que pode ser usada para oferecer mais informações sobre o VBA. Ler o código gerado pode proporcionar uma visão do VBA e criar um elo constante entre seu conhecimento do Office como usuário e seu conhecimento como programador. A única limitação é que o código gerado pode ser confuso, já que o editor de Macro deverá fazer alguma suposições sobre suas intenções, e essas suposições não são necessariamente precisas.
Para gravar uma macro
Abra o Excel em uma nova pasta de trabalho e clique na guia Desenvolvedor na faixa de opções. Clique em Gravar Macro e aceite todas as configurações padrão na caixa de diálogo Gravar Macro incluindo Macro1 como o nome da macro e Esta Pasta de Trabalho como o local.
Clique em OK para começar a gravar a macro. Observe como o texto do botão muda para Parar Gravação. Clique nesse botão assim que concluir as ações que você deseja gravar.
Clique na célula B1 e digite a primeira cadeia de caracteres clássica do programador: Olá, mundo. Pare de digitar e observe o botão Parar Gravação. Ele está esmaecido porque o Excel está esperando você terminar de digitar o valor na célula.
Clique na célula B2 para concluir a ação na célula B1 e clique em Parar Gravação.
Clique em Macros na guia Desenvolvedor marque Macro1 se essa opção não estiver selecionada, e clique em Editar para exibir o código da Macro1 no Editor do Visual Basic.
Figura 2. Código de macro no Editor do Visual Basic
Examinando o código
A macro que você criou deve ser semelhante ao código a seguir.
Sub Macro1()
'
' Macro1 Macro
'
'
Range("B1").Select
ActiveCell.FormulaR1C1 = "Hello World"
Range("B2").Select
End Sub
Esteja ciente das semelhanças e diferenças com o trecho de código anterior do texto selecionado na célula A1. Nesse código, a célula B1 é selecionada, e a cadeia de caracteres "Olá Mundo" é aplicada à célula que foi ativada. As aspas ao redor do texto especificam o valor da cadeia de caracteres em vez de um valor numérico.
Lembre-se de como você clicou na célula B2 para exibir novamente o botão Parar Gravação? Essa ação também aparece como uma linha de código. O gravador de macros registra cada pressionamento de tecla.
As linhas de código que começam com um apóstrofo e são coloridas de verde pelo editor são comentários que explicam o código ou lembram você e outros programadores sobre a finalidade do código. O VBA ignora todas as linhas ou parte de uma linha que comece com aspas simples. Um tópico importante é aquele que aborda a escrita de comentários claros e apropriados em seu código, mas essa discussão sai do âmbito deste artigo. Referências subsequentes a esse código no artigo não incluem essas quatro linhas de comentário.
Quando o gravador de macro gera o código, ele usa um algoritmo complexo para determinar as propriedades e os métodos pretendidos. Se você não reconhece uma determinada propriedade, existem muitos recursos disponíveis para ajudá-lo. Por exemplo, na macro que você gravou, o gravador de macro gerou um código referente à propriedade FormulaR1C1. Não sabe o que isso significa?
Observação
Lembre-se de que o objeto Aplicativo está implícito em todas as macros do VBA. O código que você gravou funciona com o Aplicativo. No início de cada linha.
Usando a Ajuda de Desenvolvedor
Selecione FormulaR1C1 na macro gravada e pressione F1. O sistema de Ajuda executa uma pesquisa rápida, determina se os assuntos apropriados estão na seção Desenvolvedor da Ajuda do Excel e lista a propriedade FormulaR1C1. É possível clicar no link para ler mais sobre a propriedade, mas antes de fazer isso, observe que há um link para a Referência do Modelo de Objeto do Excel na parte inferior da janela. Clique no link para exibir uma longa lista de objetos que o Excel usa no modelo de objeto para descrever objetos Worksheet e seus componentes.
Clique em qualquer uma delas para ver as propriedades e os métodos que se aplicam a esse objeto em particular, juntamente com referências cruzadas para as diversas opções relacionadas. Muitas entradas da Ajuda também oferecem pequenos exemplos de código que podem ajudar você. Por exemplo, você pode seguir os links no objeto bordas para ver como definir uma borda no VBA.
Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
Editando o código
O código Borders não se parece com a macro gravada. Um ponto que pode ser um tanto confuso no modelo de objeto é que existe mais de uma maneira de tratar um determinado objeto, célula A1 neste exemplo.
Às vezes, a melhor maneira de aprender programação é fazendo pequenas alterações em códigos de trabalho e observar o resultado. Experimente agora. Abra Macro1 no Editor do Visual Basic e altere o código para o seguinte.
Sub Macro1()
Worksheets(1).Range("A1").Value = "Wow!"
Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub
Dica
Ao trabalhar com códigos, use o recurso copiar e colar tanto quanto possível para evitar erros de digitação.
Você não precisa salvar o código para experimentá-lo, então retorne ao documento do Excel, escolha Macros na guia Desenvolvedor, escolha Macro1 e escolha Executar. Agora, a célula A1 contém o texto Uau! e tem uma borda de linha dupla em torno dela.
Figura 3. Resultados da sua primeira macro
Você acaba de combinar gravação de macros, leitura da documentação sobre o modelo de objeto e programação simples para criar um programa VBA que realize alguma tarefa. Parabéns!
Não funcionou? Leia mais sobre sugestões de depuração no VBA.
Dicas e truques de programação
Comece com exemplos
A comunidade do VBA é muito grande. Uma pesquisa na Web quase sempre gera um exemplo de código VBA que faz algo semelhante àquilo que você deseja fazer. Se não encontrar um bom exemplo, tente dividir a tarefa em unidades menores e pesquisar em cada uma delas ou tente pensar em um problema mais comum, mas que seja semelhante. É possível economizar muito tempo começando pelos exemplos.
Isso não significa que um código gratuito e muito bem elaborado esteja na Web esperando por você. Na verdade, parte do código encontrado pode ter bugs ou erros. A ideia é que os exemplos encontrados online ou na documentação do VBA sejam um ponto de partida. Lembre-se de que, para aprender a programar, são necessários tempo e raciocínio. Antes de se apressar em usar outra solução para resolver seu problema, pergunte a si mesmo se o VBA é a escolha certa para esse problema.
Simplificar um problema
A programação pode ficar complexa em um piscar de olhos. É fundamental, especialmente como iniciante, que você divida o problema nas menores unidades lógicas possíveis, então escreva e teste cada parte isoladamente. Se você tem muitos códigos na sua frente e se sente confuso ou atrapalhado, pare e deixe o problema de lado. Quando voltar para o problema, copie uma pequena parte do problema em um novo módulo, resolva essa parte, execute o código e teste-o para verificar se ele funciona. Em seguida, vá para a próxima parte.
Bugs e depuração
Existem dois tipos principais de erros de programação: erros de sintaxe, que violam as regras gramaticais da linguagem de programação, e erros de tempo de execução, que parecem sintaticamente corretos, mas falham quando o VBA tenta executar o código.
Embora a correção desses erros possa ser frustrante, os erros de sintaxe são fáceis de detectar. O Editor do Visual Basic emite um aviso e pisca se você digitar um erro de sintaxe no código.
Por exemplo, os valores das cadeias de caracteres devem estar entre aspas duplas no VBA. Para descobrir o que acontece quando você usa aspas individuais, retorne ao Editor do Visual Basic e substitua a cadeia de caracteres "Uau!" no exemplo de código por 'Uau!' (ou seja, a palavra Uau entre aspas simples). Se você clicar na linha seguinte, o Editor do Visual Basic reagirá. O erro "Erro de compilação: Esperado: expressão" não é tão útil, mas a linha que gera o erro fica vermelha para informar que existe um erro de sintaxe nessa linha e, por isso, o programa não será executado.
Clique em OK e altere novamente o texto para "Uau!".
Os erros de tempo de execução são mais difíceis de detectar porque a sintaxe da programação parece estar correta, mas o código falha quando o VBA tenta executá-la.
Por exemplo, abra o Editor do Visual Basic e altere o nome da propriedade Value para ValueX na sua Macro, introduzindo um erro de tempo de execução de forma deliberada, já que o objeto Range não possui uma propriedade chamada ValueX. Volte para o documento do Excel, abra a caixa de diálogo Macros e execute Macro1 novamente. Você deve ver uma caixa de mensagem do Visual Basic que explica o erro de tempo de execução com o texto: "O objeto não dá suporte a essa propriedade do método". Embora esse texto esteja claro, escolha Depurar para saber mais.
Ao voltar para o Editor do Visual Basic, ele estará em um modo de depuração especial que usa um realce amarelo para mostrar a linha de código que falhou. Conforme esperado, a linha que inclui a propriedade ValueX está realçada.
É possível fazer alterações no código VBA que está sendo executado. Para isso, altere ValueX de volta para Valor e clique no botão verde de reprodução logo abaixo do menu Depurar. O programa deverá voltar a funcionar normalmente.
É uma boa ideia aprender a usar o depurador de forma mais deliberada para programas mais longos e complexos. Aprenda, no mínimo, a definir pontos de interrupção para interromper a execução no ponto em que você deseja examinar o código, a adicionar inspeções para ver os valores de diversas variáveis e propriedades enquanto o código é executado e a percorrer o código linha por linha. Essas opções estão disponíveis no menu Depurar, e os usuários que realmente usam a depuração normalmente memorizam os atalhos de teclado associados.
Aproveitando os materiais de referência
Para abrir a Referência do Desenvolvedor incorporada à Ajuda do Office, abra a referência da Ajuda de qualquer aplicativo do Office clicando no ponto de interrogação na faixa de opções ou pressionando F1. Em seguida, à direita do botão Pesquisar, clique na seta suspensa para filtrar o conteúdo. Escolha Referência do desenvolvedor. Se você não vir o sumário no painel esquerdo, escolha o ícone de pequeno livro para abri-lo e expanda a Referência do Modelo de Objeto a partir daí.
Figura 5. A filtragem na Ajuda do desenvolvedor se aplica a todos os aplicativos do Office
O tempo gasto procurando a referência do Modelo de Objeto trouxe vantagens. Após compreender as noções básicas da sintaxe do VBA e do modelo de objeto do aplicativo do Office com o qual está trabalhando, você passa da fase de suposições para a fase de programação metódica.
E, claro, a Central de Desenvolvedores do Microsoft Office é um excelente portal para encontrar artigos, dicas e informações sobre a comunidade.
Pesquisando fóruns e grupos
Todo programador às vezes encontra obstáculos, mesmo depois de ler todos artigos de referência encontrados e perder o sono à noite pensando nas diversas maneiras de solucionar um problema. Felizmente, a Internet disponibiliza uma comunidade de desenvolvedores que ajudam uns aos outros a resolver problemas de programação.
Qualquer pesquisa na Web para "fórum do desenvolvedor do office" revela vários grupos de discussão. Pesquise "desenvolvimento do office" ou uma descrição do problema para encontrar fóruns, postagens de blog e também artigos.
Se você fez todo o possível para resolver um problema, não tenha medo de postar sua pergunta em um fórum de desenvolvedores. Esses fóruns recebem postagens de programadores iniciantes, e muitos dos desenvolvedores experientes gostam de ajudar.
Veja a seguir alguns pontos da etiqueta a ser seguida ao postar em um fórum de desenvolvedores:
Antes de postar, procure pelas Perguntas Frequentes no site ou por diretrizes que os membros desejam que sejam seguidas. Certifique-se de postar conteúdo que satisfaça essas diretrizes e de postar na seção correta do fórum.
Inclua um exemplo claro e completo do código e, se ele for parte de uma seção de código mais longa, considere editar o código para deixá-lo mais claro para outras pessoas.
Descreva seu problema de forma clara e concisa e resuma as etapas adotadas para resolver o problema. Reserve um tempo para escrever sua postagem da melhor forma possível, especialmente se você estiver confuso ou com pressa. Apresente a situação de uma maneira que faça sentido para os leitores na primeira vez que eles lerem a instrução sobre o problema.
Seja educado e expresse seu agradecimento.
Aprendendo mais sobre programação
Embora este artigo seja curto e aborde apenas o essencial sobre VBA e programação, esperamos que tenha sido o suficiente para você começar.
Esta seção descreve resumidamente mais alguns tópicos importantes.
Variáveis
Nos exemplos simples deste artigo, você manipulou objetos que o aplicativo já havia criado. Talvez você queira criar seus próprios objetos para armazenar valores ou referências para outros objetos para usar temporariamente em seu aplicativo. Esses objetos são chamados variáveis.
Para usar uma variável no VBA, informe ao VBA o tipo de objeto que a variável representa usando a instrução Dim. Em seguida, defina o valor e use-o para definir outras propriedades ou variáveis.
Dim MyStringVariable As String
MyStringVariable = "Wow!"
Worksheets(1).Range("A1").Value = MyStringVariable
Ramificação e looping
Os programas simples neste artigo executam uma linha por vez, de cima para baixo. O verdadeiro poder da programação vem das opções que você tem para determinar quais linhas de código executar, tendo como base uma ou mais condições especificadas. É possível estender essas capacidades ainda mais ao repetir uma operação por diversas vezes. Por exemplo, o código a seguir estende a Macro1.
Sub Macro1()
If Worksheets(1).Range("A1").Value = "Yes!" Then
Dim i As Integer
For i = 2 To 10
Worksheets(1).Range("A" & i).Value = "OK! " & i
Next i
Else
MsgBox "Put Yes! in cell A1"
End If
End Sub
Digite ou cole o código no Editor do Visual Basic e execute-o. Siga as instruções na caixa de mensagem exibida e altere o texto na célula A1, de Uau! para Sim! e execute-o novamente para ver o poder do looping. Esse trecho de código demonstra variáveis, ramificações e looping. Leia cuidadosamente após observá-lo em ação e tente determinar o que acontece quando cada linha é executada.
Todos os meus aplicativos do Office: Exemplo de código
Veja alguns scripts para experimentar. Cada um deles soluciona um problema real do Office.
Criar um email no Outlook
Sub MakeMessage()
Dim OutlookMessage As Outlook.MailItem
Set OutlookMessage = Application.CreateItem(olMailItem)
OutlookMessage.Subject = "Hello World!"
OutlookMessage.Display
Set OutlookMessage = Nothing
End Sub
Lembre-se de que há situações em que você pode querer automatizar o email no Outlook. Modelos também podem ser usados.
Excluir linhas vazias em uma planilha do Excel
Sub DeleteEmptyRows()
SelectedRange = Selection.Rows.Count
ActiveCell.Offset(0, 0).Select
For i = 1 To SelectedRange
If ActiveCell.Value = "" Then
Selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Next i
End Sub
Lembre-se de que você pode selecionar uma coluna de células e executar essa macro para excluir todas as linhas na coluna selecionada que têm uma célula em branco.
Excluir caixas de texto vazias no PowerPoint
Sub RemoveEmptyTextBoxes()
Dim SlideObj As Slide
Dim ShapeObj As Shape
Dim ShapeIndex As Integer
For Each SlideObj In ActivePresentation.Slides
For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
Set ShapeObj = SlideObj.Shapes(ShapeIndex)
If ShapeObj.Type = msoTextBox Then
If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
ShapeObj.Delete
End If
End If
Next ShapeIndex
Next SlideObj
End Sub
Esteja ciente de que esse código percorre todos os slides e exclui todas as caixas de texto que não contêm texto. Essa variável de contagem diminui objetos em vez de aumentá-los, pois todas as vezes que o código exclui um objeto, ela remove esse objeto da coleção, e isso reduz a contagem.
Copiando um contato do Outlook para o Word
Sub CopyCurrentContact()
Dim OutlookObj As Object
Dim InspectorObj As Object
Dim ItemObj As Object
Set OutlookObj = CreateObject("Outlook.Application")
Set InspectorObj = OutlookObj.ActiveInspector
Set ItemObj = InspectorObj.CurrentItem
Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub
Lembre-se de que esse código copia o contato que está aberto no Outlook para o documento aberto do Word. Esse código só funciona quando há realmente um contato aberto para inspeção no Outlook.
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.