Anda di halaman 1dari 17

Capítulo 2

Macros e VBA

cap02.indd 15 10/2/2006 17:07:15


O VBA
A introdução apresentada no capítulo anterior serve não só para
os estudos de VBA, mas para qualquer linguagem de programação.
Por isso, salientamos que é importante a familiarização com os con-
ceitos ali apresentados se deseja se tornar um especialista em VBA,
capaz de criar suas próprias macros e códigos, e não um simples
compilador (no sentido de quem copia mesmo) de códigos tirados
de livros ou de sites da Internet.
O VBA (Visual Basic for Applications) é uma implementação do
Visual Basic da Microsoft incorporada em todos os programas do
Microsoft Office, bem como em outras aplicações da Microsoft,
como o Visio. Também é possível encontrá-la, pelo menos parcial-
mente, em programas de terceiros como o AutoCAD.
Ele substitui e estende o potencial das linguagens de programa-
ção para macros anteriores – incluindo as implementações para gra-
vadores de macros presentes no Office antes da versão 2000.
Ele pode ser utilizado, primariamente, para controlar os aspectos
relacionados com a aplicação anfitriã, incluindo a manipulação da in-
terface do usuário, tais como menus, barras de ferramentas, formu-
lários desenhados pelo usuário e caixas de diálogo. No entanto, indo
um pouco além, o VBA também pode ser utilizado para criar scripts
de automação das aplicações, mediante o VBA Script, a resposta da
Microsoft ao JavaScript. O VBA Script trabalha com uma janela de
criação de códigos, já incorporada à interface de criação de aplica-
ções no VBA, o VBA Editor, nas novas funções do Office.
Como o nome sugere, o VBA é muito parecido com o Visual Basic;
uma escolha óbvia, já que boa parte do Office é criado a partir de có-
digos do Visual Basic. No entanto, o VBA só pode correr código den-
tro da aplicação, no lugar de operar como aplicação separada. Porém,
pode ser usado para controlar uma aplicação a partir de outra.
O VBA, assim como o Visual Basic, é uma linguagem orientada a
objetos. Definindo de forma simples, uma linguagem orientada a ob-
jetos é uma técnica de programação que se concentra nos dados (ou
objetos) e nas interfaces que têm objetos. Conceitualmente, a lin-
guagem orientada a objetos trabalha com a noção de que tudo que
existe a nossa volta, incluindo nós mesmos, pode ser estruturado
como objeto. Alguns, como carros, bancos e cadeiras são objetos
concretos. Já outros, como nossa conta bancária, uma opinião ou
uma dívida com alguém são classificados como objetos abstratos.

Programação de planilhas em VBA


16

cap02.indd 16 10/2/2006 17:07:15


O importante em uma linguagem orientada a objetos é construir
objetos confiáveis, ou seja, que correspondam à finalidade para a
qual foram criados. Os meios utilizados para a criação desse objeto
são de importância secundária.

Procedimentos para
gravação de macros
Uma macro é um programa escrito ou gravado por um usuário
capaz de armazenar uma série de comandos de Excel para que pos-
sam ser utilizados posteriormente como um único comando. Com
as macros, podemos automatizar tarefas complexas, assim como é
possível reduzir o número de passos necessários para a execução
de uma tarefa (o conceito de algoritmo, no Capítulo 1, Introdução à
lógica de programação) executada com freqüência.
Macros são o meio de trabalho-padrão em VBA. Uma macro,
dentro do Microsoft Office, pode ser gravada de duas maneiras: me-
diante o gravador de macros – opção rudimentar, baseada no antigo
gravador de macros do Office 97 – ou com o Editor de Visual Basic,
embutido no Microsoft Office. A utilização do gravador é boa o su-
ficiente para a montagem de pequenas rotinas, ou para entender o
funcionamento de algumas funcionalidades do VBA, mas não é a fer-
ramenta mais adequada para a produção de aplicativos complexos.
Nesses casos, deve ser utilizado o Editor de VBA.

Utilização do gravador de macros

1. Para empregar o gravador de macros, defina, antes de tudo,


qual função será criada. Lembre-se de toda a nossa conversa sobre
algoritmos, no Capítulo 1, Introdução à lógica de programação, e
você verá a partir de agora como ela é importante. Podemos até
mesmo utilizar o expediente, muito prático, de abrir o Microsoft
Excel para anotar, em uma folha de papel ou no Bloco de notas,
quantas operações ou etapas são necessárias para finalizar a tarefa.
Lembre-se do método cartesiano: divida o problema em problemas
menores, para resolvê-lo da melhor forma, e organize-o no formato
passo a passo, ou seja, uma etapa só deve ser iniciada quando a
anterior for terminada.

Macros e VBA
17

cap02.indd 17 10/2/2006 17:07:15


2. Isso feito, abra o Microsoft Excel. Siga o menu Arquivo > Novo
ou utilize o atalho Ctrl + O se quiser criar a macro em um novo do-
cumento. Se quiser criar a macro a partir de uma planilha existente,
clique em Arquivo > Abrir e escolha a planilha desejada, ou utilize o
atalho Ctrl + A.
Para gravar a macro, clique no menu Ferramentas > Macro >
Gravar nova macro.

Figura 2.1.

3. Será aberta a janela Gravar macro. Clique na linha Nome da


macro para dar um nome à macro que será gravada. Dê-lhe um
nome coerente; de preferência um que faça sentido no momento da
documentação, ou para alguém que acaba de chegar na empresa e
precise utilizá-la. Nomes-padrão, como Macro1 e Macro2, não aju-
dam muito, mas são melhores do que apelidos e palavrões. O ideal
é que o nome da macro inclua uma brevíssima descrição do que ela

Programação de planilhas em VBA


18

cap02.indd 18 10/2/2006 17:07:15


faz. Uma macro que seleciona colunas, por exemplo, pode, tranqüi-
lamente, chamar-se SelecColuna.

4. Se você deseja que a macro possua um atalho de teclas, selecio-


ne a caixa ao lado da linha Ctrl + e digite uma letra, um número ou um
símbolo. Se quiser que além de Ctrl o atalho também contenha a tecla
Shift, aperte-a no momento em que digitar a letra na caixa.

Figura 2.2.

5. No espaço Armazenar macro em, podemos escolher entre três


opções:
• Esta pasta de trabalho: a macro será gravada na mesma pasta
que armazena as planilhas atualmente utilizadas e passa, portanto, a
fazer parte do projeto;
• Nova pasta de trabalho: armazena a macro em uma pasta di-
ferente da pasta com as planilhas atualmente manipuladas;
• Pasta pessoal de macros: indicamos ao Office que a macro
deve ser armazenada junto com outras macros, em uma pasta per-
sonalizada, apenas para macros.

Aqui, vamos supor que tenhamos escolhido a última opção.

6. Na linha Descrição, dê algumas informações sobre a função


da macro. É possível utilizar as indicações algorítmicas formuladas,
caso as tenha especificado. O importante é não deixar de documen-
tar o que está sendo feito. Mantenha a indicação da data e do usuá-
rio no comentário original. Clique em OK.

7. Agora, é preciso gravar as ações da macro. Note que no meio


da planilha surgirá uma pequena barra de ferramentas. Nela, encon-

Macros e VBA
19

cap02.indd 19 10/2/2006 17:07:15


tramos um botão quadrado que se chama Parar gravação; é ele que
você deve utilizar para interromper a gravação da macro após reali-
zar todas as tarefas.
Vamos supor que a ação diga respeito à seleção das colunas A, B
e C de uma planilha do Excel. Após selecionar as três colunas, clique
no botão Parar gravação.

8. Para visualizar o resultado da macro, utilize a combinação de


teclas Alt + F8 para acessar a janela Macro. Nela, você terá listadas
todas as macros do sistema, incluindo a gravada agora há pouco.

Figura 2.3.

9. Em seguida, clique na macro criada anteriormente e, depois,


em Executar. Se a ação for realizada, obtivemos sucesso na criação
da macro. Também faça um teste com o atalho atribuído à macro.

10. Agora, vem a parte realmente interessante. Além de criar


uma macro simples, podemos aprender como o editor de macros se
comporta, descobrindo, inclusive, quais elementos foram utilizados
para criá-la. Para tanto, clique na macro criada e aperte o botão Edi-
tar. Aparecerá o Editor do Microsoft Visual Basic, que veremos com
detalhes mais adiante. Nele, estará inscrito todo o código VBA Script
utilizado pela macro gravada anteriormente.

Programação de planilhas em VBA


20

cap02.indd 20 10/2/2006 17:07:16


Figura 2.4.

11. O código ficará parecido com o que vemos a seguir:

Sub Macro3()

‘ Macro3 Macro
‘ Macro gravada em 12/1/2006 por Teste

‘ Atalho do teclado: Ctrl+Shift+H

Range(“A:C,A:C”).Select
Range(“A15”).Activate
End Sub
Sub Macro4()

‘ Macro4 Macro
‘ Macro gravada em 12/1/2006 por Teste

‘ Atalho do teclado: Ctrl+Shift+S

Columns(“A:F”).Select
Range(“A15”).Activate
End Sub

Macros e VBA
21

cap02.indd 21 10/2/2006 17:07:16


Há vários elementos dignos de nota. Vejamos:
• Observe que o sistema das macros é uma cópia quase literal
da ordem do algoritmo, em que ele se baseia. A macro tem um iní-
cio, sempre definido pela abertura de uma sub-rotina (Sub). Logo
após, são declaradas as informações referentes à macro, incluindo
as teclas de atalho que podem ser utilizadas para ativá-la;

• Note que essas informações são declaradas como comentá-


rios; partes do código que não são lidas pelo interpretador do Visual
Basic, sendo encaradas como comentários do código. No VBA, o
caractere ‘ é utilizado como indicador de comentário;

• Quando declaramos a ação de selecionar as colunas (o esco-


po do nosso exemplo) sempre deve ser obedecida a seguinte or-
dem: propriedade – parâmetros – evento. Na primeira linha após os
comentários, por exemplo, temos a estrutura Range(“A:C,A:C”).
Select, em que utilizamos, primeiramente, a propriedade Range,
para mostrar que será definido um intervalo (range) de células, li-
nhas ou colunas, justamente declarado a seguir, entre parênteses;
elemento utilizado para isolar parâmetros no VBA. O ponto após o
parêntese de fechamento é utilizado para separar a declaração do
parâmetro da chamada do evento, que no caso é Select;

• Por último, é preciso observar que, quando falamos em uma


planilha de Excel, estamos falando de um documento sempre ati-
vo. Não existem planilhas 100% estáticas: se a planilha está aberta,
mesmo que não esteja sendo editada, ela possui ao menos um ele-
mento (uma célula, linha, coluna ou um intervalo de células) ativo. É
o que o final do nosso código de macros mostra quando a proprie-
dade Range é utilizada novamente, mas, desta vez, aplicada a um
parâmetro que representa uma coordenada do Excel ((“A15”)) se-
guido do evento Activate. De acordo com uma convenção informal,
quando a posição de uma célula ou coordenada após a execução de
uma macro ou script não é relevante, costuma-se ancorar o final do
comando no início da planilha, na célula A1.

Programação de planilhas em VBA


22

cap02.indd 22 10/2/2006 17:07:16


Edição de macros
Como já dissemos, o gravador de macros é uma boa forma de
criar macros simples sem a necessidade de editar scripts, ou mes-
mo sem precisar criar macros para, depois, com o auxílio do botão
Editar, observar como elas são processadas em formato de código
pelo VBA (como fizemos anteriormente).
Porém, não podemos fazer a mesma observação com relação à
criação de scripts complexos, com vários parâmetros ou seqüências
de eventos. O que dizemos é ainda mais verdadeiro ao considerar-
mos (lembre-se da montagem de algoritmos) que uma seqüência de
eventos não é necessariamente estática e pode evoluir para duas ou
mais variáveis.
Mostraremos, a seguir, a utilização do editor, criando, logo após,
com seu auxílio, uma macro ainda relativamente simples.

Iniciando o uso do editor de macros

1. Abra o Microsoft Excel e selecione uma planilha. Em seguida,


abra o menu Ferramentas > Macro > Editor do Visual Basic. Tam-
bém podemos utilizar a combinação de teclas Alt + F11 para abrir o
Editor.

2. Será aberta uma janela do Microsoft Visual Basic, como pode-


mos ver na Figura 2.5. Existem, acopladas, duas janelas à esquerda.
A janela superior chamamos de Projeto – VBAProject e à janela infe-
rior damos o nome de Propriedades. Na primeira, estão os elemen-
tos que fazem parte do projeto. Na segunda janela, são listadas as
propriedades dos objetos que porventura podem ser incorporados
às nossas macros.

Importante: a partir de agora, projeto deve ser entendido como


o grupo de macros e de planilhas de Excel utilizados para uma
determinada funcionalidade.

Macros e VBA
23

cap02.indd 23 10/2/2006 17:07:16


Figura 2.5.

3. Apresentada a interface do editor, vamos dar início à sua utili-


zação. Para tanto, clique no menu Inserir > Módulo.
Observe que na janela Projeto – VBAProject surge um novo di-
retório, chamado Módulo1 ou Módulo2, se você está utilizando um
projeto que já havia sido iniciado. Dentro desse módulo, serão arma-
zenadas as macros que criaremos, a partir de agora, para o projeto.

4. Note que também será aberta, na janela central, uma janela


em branco, denominada Pasta1 – MóduloX (Código), em que X é o
número do módulo aplicado e a denominação Pasta1 pode ser subs-
tituída pelo nome da planilha que está sendo utilizada. Essa janela é
a interface para a inserção dos comandos, na qual inscreveremos os
códigos que farão parte de nossa macro.

Programação de planilhas em VBA


24

cap02.indd 24 10/2/2006 17:07:16


Figura 2.6.

5. Agora, vamos criar uma macro simples, que terá como função
mudar a planilha ativa presente na tela do Excel (a conhecida plani-
lha Plan1).
Na tela central do editor de macros, escreva o seguinte código:

Sub Alterar _ Folha de dados()

Worksheets(2).Activate

End Sub

6. Entre o princípio e o final da macro, escrevemos as instruções


que desejamos que se realizem. No nosso caso, como já foi explica-
do, desejamos que a segunda planilha da pasta (Plan2) torne-se a
planilha ativa.
Se queremos simplesmente guardar a macro, é preciso salvar a
planilha ativa com o nome que desejamos dar à macro, seguindo o
menu Arquivo > Salvar <Nome da planilha>, ou utilizando a com-
binação de teclas Ctrl + B.

Macros e VBA
25

cap02.indd 25 10/2/2006 17:07:17


Criamos, assim, nossa primeira macro. É preciso ter atenção, po-
rém, em um detalhe: ao transplantar a planilha para outro computador,
ou mesmo quando tentamos executar a macro nela contida em nosso
Excel, é possível não obter sucesso. O que estará acontecendo?
Esse problema ocorre devido às opções de segurança do Micro-
soft Office. Há não muito tempo (na verdade até meados do ano
2000), a principal forma de contaminação de computadores por ví-
rus e softwares maliciosos era, depois dos disquetes, os documen-
tos do Microsoft Office e suas macros. Sabendo disso, a Microsoft
criou opções de segurança para execução de macros, que podem
ser acessadas, em qualquer programa do Office, por meio do menu
Ferramentas > Macro > Segurança. Em seguida, basta escolher a
opção Baixo. A própria opção vem inscrita como Não recomendável,
e ela o é realmente: você só deve habilitá-la para testar suas próprias
macros em seu computador, ou ao se deparar com problemas para
rodar macros absolutamente necessárias em outros computadores
também de sua responsabilidade. Salvo isso, mantenha a opção de
segurança em Alto.

Figura 2.7.

Vamos conferir, agora, mais alguns exemplos simples de ma-


cros. Esses exemplos servirão como exercícios de fi xação, para
que você se familiarize com a produção de macros e botões e se
prepare para os próximos capítulos, em que abordaremos macros
de produção reais.

Programação de planilhas em VBA


26

cap02.indd 26 10/2/2006 17:07:17


Primeiro exemplo

O objetivo da macro será abrir uma pasta de planilhas já existen-


te. Saiba como construí-la:

1. Abra o editor de macros clicando em Ferramentas > Macro >


Editor do Visual Basic.

2. Clique no menu Inserir > Módulo e, depois, clique na tela de


escrita do código.

3. Inscreva o seguinte código:

Sub AbrirPasta()

Workbooks.Open (“E:\Documents and Settings\Admi-


nistrador\Meus documentos\Monitores.xls”)

End Sub

Observe que colocamos o caminho do arquivo entre parênteses


e aspas duplas, justamente para mostrar para a função Workbooks.
Open que o parâmetro corresponde a uma coordenada que deve ser
acessada; no caso, um arquivo que deve ser aberto. Esse arquivo
deve ser obrigatoriamente uma planilha de Excel. Portanto, bancos
de dados DBF, formulários do FoxPro e mesmo outros formatos de
planilha, como o Quattro Pro, ainda que salvos no Excel e converti-
dos para seu formato, não serão abertos por essa macro VBA, pois
a extensão de arquivos não corresponde ao padrão do Excel (exten-
são .xls).
Além disso, tanto o arquivo quanto o caminho devem existir ou a
macro nos retornará erro (Figura 2.8):

Figura 2.8.

Macros e VBA
27

cap02.indd 27 10/2/2006 17:07:17


Dessa forma, se o arquivo for movido deste diretório, ou se o
próprio diretório mudar de nome, a macro deve ser atualizada manu-
almente. Se você tem dúvidas sobre o erro apresentado na macro,
utilize o botão Depurar para que o erro no código seja sublinhado
em amarelo (Figura 2.9):

Figura 2.9.

Segundo exemplo

O objetivo dessa macro é ativar uma pasta já aberta. Vejamos


como estruturá-la:

1. Repita o primeiro e o segundo passos do primeiro exemplo,


ou utilize a mesma planilha do exemplo anterior para criar essa nova
macro.

2. Inscreva na tela de edição do código as seguintes instruções:

Sub AtivarPasta()

Workbooks(“Monitor.xls”).Activate

End Sub

Observe que, nessa macro, não indicamos o caminho em que se


encontra o arquivo, pois ele deve estar aberto (portanto, dentro da
memória RAM) para que a macro funcione.

Programação de planilhas em VBA


28

cap02.indd 28 10/2/2006 17:07:17


3. Como esse é apenas mais um exemplo, para uma melhor orga-
nização o ideal seria juntar as macros do primeiro exercício em uma
única macro, já que Activate, obrigatoriamente, deve ser utilizado
para ativar um elemento da planilha.

Terceiro exemplo

O objetivo da macro é criar uma nova pasta de planilhas. Saiba


como fazê-la:

1. Repita o primeiro e o segundo passos do primeiro exemplo, ou


utilize a mesma planilha do exemplo anterior para criar essa macro.

2. Inscreva na tela de edição do código as seguintes instruções:

Sub NovaPasta()

Workbooks.Add

End Sub

3. Se você alterar uma planilha criada por essa macro, o Excel


perguntará se deseja salvar as alterações. Note, portanto, que tanto
a função quanto o comportamento dessa macro e das pastas de pla-
nilhas por ela criadas são exatamente as mesmas do botão Novo da
barra de ferramentas-padrão do Excel, ou da opção Novo do menu
Arquivo.

Botões na barra de ferramentas


Até aqui, criamos diversas macros e vimos como colocá-las em
funcionamento com o comando Macro, localizado no menu Ferra-
mentas. Em algumas ocasiões, no entanto, pode ser necessária uma
forma mais simples de acessar a macro recém-criada, seja por sua
importância, seja pela necessidade freqüente de ativá-la. Por isso,
terminaremos este capítulo criando uma barra de ferramentas per-
sonalizada, na qual será possível inserir todas as nossas macros.

Macros e VBA
29

cap02.indd 29 10/2/2006 17:07:18


Criação de uma nova barra de ferramentas

1. Abra o menu Exibir > Barras de ferramentas e selecione a


opção Personalizar.

2. Será aberta a janela Personalizar. Clique na aba Barra de Fer-


ramentas e depois em Nova.

3. Aparecerá uma janela chamada Nova barra de ferramentas, na


qual é preciso especificar o nome que daremos a nossa barra. Como
exemplo, podemos citar Minhas macros ou Macros de trabalho.

4. Clique em OK e observe que a lista de barras de ferramentas


disponíveis é acrescida do nome que demos à nossa barra. À direita
do nome surgirá uma indicação, na caixa de verificação, de que essa
barra está visível.

5. Clique na aba Comandos. Na lista de categorias, selecione a


opção Macros. Na parte direita desta mesma janela surgirão duas
opções: Personalizar item de menu e Personalizar botão. Clique em
Personalizar botão.

Figura 2.10.

6. Arraste esse botão até a nova barra de ferramentas. Os botões


arrastados até ela serão anexados em tempo real à barra.

Programação de planilhas em VBA


30

cap02.indd 30 10/2/2006 17:07:18


7. Na janela Personalizar, clique no botão Modificar seleção e
selecione a opção Alterar imagem do botão, escolhendo, a seguir,
o ícone que desejar.

Figura 2.11.

8. Clique novamente no botão Modificar seleção e, em seguida,


na opção Nome. Dê o nome que desejar ao botão de macro.

9. Clique novamente no botão Modificar seleção e selecione a


opção Atribuir macro. Aparecerá uma nova janela chamada Atribuir
macro. Escolha a macro que deseja atribuir ao botão (pode ser uma
das que criamos). Selecionada a macro, clique em OK e feche a ja-
nela Personalizar. Nossa barra de macros está pronta, sendo que é
possível adicionar outros botões, se assim desejarmos.

Macros e VBA
31

cap02.indd 31 10/2/2006 17:07:18

Anda mungkin juga menyukai