Você está na página 1de 12

MACROS & VBA: Sofia S

A MAGIA DO EXCEL

Maro de 2014
Macros & VBA: A Magia do Excel Sofia S

2
Sofia S Macros & VBA: A Magia do Excel

NDICE

INTRODUO.......................................................................................................................................................... 4
O que uma macro?........................................................................................................................................... 4
Quando altura de gravar uma Macro? ............................................................................................................ 4
Quem pode gravar macros? ............................................................................................................................... 4
O que o VBA? ................................................................................................................................................... 4
Procedimento Conceptual para Gravar Macros ................................................................................................. 4

GRAVAO DE MACROS ......................................................................................................................................... 5


Passo 1: Activar o Separador Programador ........................................................................................................ 5
Passo 2: Aceder Janela Gravar Macro (Record Macro) ................................................................................... 5
Passo 3: Atribuir tecla de atalho ......................................................................................................................... 5
Passo 4: Decidir localizao da Macro ................................................................................................................ 5
Passo 5: Efectuar os procedimentos da Macro .................................................................................................. 5
Passo 6: Juntar Vrias Macros ............................................................................................................................ 6
Passo 7: Gravar o Ficheiro com Macros.............................................................................................................. 6
Passo 8: Atribuir a uma Macro um boto da Barra de Ferramentas de Acesso Rpido .................................... 7
Passo 7: Abrir o Ficheiro com Macros ................................................................................................................ 7
T RU QU E S D E SE LE C O E M MACROS C OM RE FE R NC IA S RE LA TI V A S ................................................................ 7

CDIGOS VBA UTEIS ............................................................................................................................................... 8

3
Macros & VBA: A Magia do Excel Sofia S

INTRODUO

O QUE UMA MACRO ?


Imagine a sua manh. Acorda, lava os dentes, toma banho, veste-se, toma pequeno-almoo, penteia-se, pega
na chave, sai, fecha a porta e faz isto todos os dias, todas as manhs mais ou menos da mesma maneira. Ora
se a vida fosse um Excel amanh acordava, punha uma macro a gravar, fazia tudo normalmente e, no dia
seguinte, carregava num boto e voil! A Macro fazia tudo sozinha!
Levando para o Excel imagine que todas as semanas recebe um ficheiro onde tem que eliminar colunas,
formatar tabela, filtrar, imprimir e enviar. Pode (e deve!) gravar uma macro para facilitar este processo.

Q UANDO ALTURA DE GRAVAR UMA M ACRO ?


Sempre que identificar que efectua um procedimento frequente e repetidamente. Gravar uma Macro fcil,
basta efectuar os procedimentos que j realiza habitualmente, mas com a Macro a gravar .

Q UEM PODE GRAVAR MACROS ?


Toda a gente pode gravar macro, para se gravar uma macro basta ser um utilizador exigente do Excel e uma
pessoa com pouco tempo e pouca pacincia para fazer sempre a mesma tarefa da mesma forma.

O QUE O VBA?
Quando gravamos uma macro atravs do gravador de Macros criamos um programa. Esse programa feito
num cdigo numa linguagem especfica denominada VBA Visual Basic for Applications. Praticamente todas
as boas Macros precisam de um toque ou outro no seu cdigo mas as boas notcias que na internet todos os
cdigos que precisamos esto publicados .

P ROCEDIMENTO C ONCEPTUAL PARA G RAVAR M ACROS


1. Listar todas as tarefas que se pretendem realizar na Macro
2. Dividir os passos da Macro em conjuntos de trs
3. Criar um ficheiro com os dados de base que iro ser utilizados na Macro
4. Criar pelo menos sete cpias da folha que contm os dados (para testes)
5. Iniciar a gravao da Macro, com o nome final da macro e a tecla de atalho
6. Realizar o primeiro conjunto de trs primeiros passos da Macro e parar a gravao
7. Testar. Se correr bem, passar para o prximo passo. Se correu mal, identificar e corrigir o
erro
8. Iniciar a gravao da macro Temp1, com o segundo conjunto de trs passos
9. Testar na mesma folha onde foi testada a primeira Macro. Se correr bem, passar para o
prximo passo. Se correu mal, identificar e corrigir o erro
10. Aceder ao cdigo VBA da macro Temp1 e apagar o que divide o cdigo da primeira macro
da segunda
11. Repetir os ltimos quatro passos para cada um dos conjuntos de trs passos, dando nomes
sucessivos s macros Temp2, Temp3, etc
12. Quando as folhas de testes estiverem no fim, criar novas cpias da folha inicial, para
garantir sempre base para testes

4
Sofia S Macros & VBA: A Magia do Excel

GRAVAO DE MACROS
P ASSO 1: A CTIVAR O S EPARADOR P ROGRAMADOR
1. Direito do rato no nome de um separador, o Base (Home), por exemplo
2. Personalizar o Friso (Customize the Ribbon)
3. Na rea do lado direito, activar a cruzinha do Programador (Developer)
4. Clique sobre o boto pretendido e, depois, em OK
*s necessrio efectuar uma nica vez este passo

P ASSO 2: A CEDER J ANELA G RAVAR M ACRO (R ECORD M ACRO )


1. Aceder ao Separador Programador (Developer)
2. Clicar no boto Gravar Macro (Record Macro)
3. Registar o nome da Macro (sem espaos, acentos ou smbolos excepto underscore)

P ASSO 3: A TRIBUIR TECLA DE ATALHO


1. Clicar na caixa de texto frente do CTRL +
2. Premir as teclas que pretende utilizar em associao com o CTRL ( vantajoso utilizar o Shift como
segunda tecla de combinao, para se assegurar que no utiliza uma j existente)

P ASSO 4: D ECIDIR LOCALIZAO DA M ACRO


1. Escolha uma das seguintes opes:
Neste Livro (This Workbook) a macro fica armazenada no ficheiro activo e s funcionar
nesse livro ou em outros livros, desde que o inicial esteja aberto;
No Livro pessoal de macros (Personal Macro Workbook) a macro fica armazenada no
ficheiro intitulado pessoal.xls, que est sempre aberto e guardado automaticamente pelo
Excel. Guardar uma macro assim permite que a mesma fique disponvel em todos os ficheiros
de Excel desse computador
Num novo livro (New Workbook) Armazena a macro num novo Livro

P ASSO 5: E FECTUAR OS PROCEDIMENTOS DA M ACRO


1. Se pretender, adicione uma descrio da macro
2. Clique sobre o boto OK para iniciar a gravao da macro
3. Opte se pretende referncias absolutas ou relativas:
Referncias Absolutas todos os procedimentos que efectuar sero repetidos exactamente
nas clulas que utilizou na gravao da Macro. Por exemplo, se estiver na clula B1, seleccionar
a clula B5 e colocar o efeito Negrito (Bold) quando repetir a Macro a mesma ser efectuada
na clula B5 independentemente da clula seleccionada. Se esta a situao que pretende,
confirme que no boto Referncia Relativa (Relative Reference) est inactivo
Referncias Relativas os procedimentos que efectuar sero repetidas em clulas mas de
forma relativa. Por exemplo, se estiver na clula L1 e efectuar a Macro indicada anteriormente
a mesma ser efectuada na clula L5 (que sero quatro clulas esquerda da inicial). Se esta
a situao pretendida, active o boto Referncia Relativa (Relative Reference)
4. Efectue todos os procedimentos que pretende que sejam armazenados em Macro
5. Termine a gravao, clicando no boto

5
Macros & VBA: A Magia do Excel Sofia S

6. Teste a sua Macro, premindo a combinao de teclas gravada ou clicando no respectivo boto:
Se no teste surgir uma janela com o ttulo hora de clicar em Debug -
- analisar o cdigo que aparece a amarelo no VBA e corrigir o erro. Quando fechar
o VBA vai aparecer a seguinte indicao: This command will stop the debugger, onde se
clica em OK para voltar ao Excel e testar de novo
Em caso de questo, pesquise no Google a indicao que surge na janela, geralmente Run-
time Error n: descrio, porque j algum teve esse mesmo obstculo e ultrapassou-o
com ajuda da internet. Ou ento envie um mail Sofia
Se pretender aceder ao cdigo VBA da Macro basta clicar no boto Macros do Separador
Programador (Developer), clicar no nome da Macro pretendida e clicar em Editar (Edit)

P ASSO 6: J UNTAR V RIAS M ACROS


Quando se constroem Macros muito complexas facilita dividir os diferentes procedimentos em Macros
distintas e, no final, junt-las numa s. O procedimento o seguinte:
1. Iniciar a gravao da primeira Macro com o nome que pretende que fique na Macro Final, e
atribuir uma tecla de atalho
2. Realizar o primeiro grupo de procedimentos desejados
3. Quando a Macro estiver finalizada, gravar a segunda Macro com o
nome Temp1, sem tecla de atalho e com o segundo grupo de
procedimentos
4. Quando a segunda Macro estiver finalizada, aceder lista de Macros
e clicar na Macro Temp1
5. Clicar na opo Editar (Edit)
6. Identificar as linhas que separam o cdigo (palavras a preto) da
primeira Macro e da segunda e eliminar

P ASSO 7: G RAVAR O F ICHEIRO COM M ACROS


1. Na verso 2007 e posterior, quando se grava o ficheiro
normalmente, aparece o seguinte erro:

2. necessrio clicar em No (No) e, no


Guardar com o tipo (Save as type),
activar o tipo de ficheiro Livro com
Permisso para Macros do Excel (Excel
Macro Enable Workbook) - *.xlsm

6
Sofia S Macros & VBA: A Magia do Excel

P ASSO 8: A TRIBUIR A UMA M ACRO UM BOTO DA B ARRA DE


F ERRAMENTAS DE A CESSO R PIDO
1. Clicar no boto final da Barra de Ferramentas de Acesso Rpido (Quick Access Toolbar)
2. Clicar em Mais Comandos (More
Commands)
3. Na rea Escolher comandos de (Choose
commands from), seleccione Macros
4. Clique duas vezes na Macro que pretende
que seja activada pelo boto
5. Do lado direito, clique em Modificar
(Modify) para alterar o aspecto do boto
inserido
6. Clique sobre o boto pretendido e, depois, em OK
7. Clique em OK novamente para terminar o procedimento

P ASSO 7: A BRIR O F ICHEIRO COM M ACROS


1. Quando o ficheiro for aberto o Excel bloqueia as Macros sendo necessrio activ-las na barra de
informaes clicando em Activar Contedo (Enable Content):

T RUQUES DE SELECO EM M ACROS COM REFERNCIAS RELATIVAS


Quando utiliza referncias relativas fundamental seleccionar e posicionar-se de forma universal, de forma a
permitir que a Macro funcione com tabelas com 7 colunas mas tambm com tabelas com 3, por exemplo.
Nesse sentido conveniente utilizar as seguintes combinaes de teclas quando estiver a gravar a Macro:
1. Para colocar como activa o incio da folha: CTRL + HOME
2. Seleccionar tabelas inteiras: CTRL+T (CTRL+A)
3. Seleccionar todos os dados de uma coluna: CTRL + SHIFT + BAIXO
4. Seleccionar todos os dados de uma linha: Linhas: CTRL + SHIFT + DIREITA
5. Colocar como activa a primeira clula vazia de uma tabela: CTRL + BAIXO + BAIXO

7
Macros & VBA: A Magia do Excel Sofia S

CDIGOS VBA UTEIS


Quando gravamos a Macro, existem situaes em que faamos o que faamos, a Macro no funciona. Nestes
casos necessrio escrever o cdigo que resolve a situao directamente no VBA.
Como no somos programadores o que geralmente se faz ir ao Google pesquisar (esta pesquisa inicia-se
sempre com as palavras Excel VBA e de preferncia em ingls ou seja Excel VBA close workbook without
save).
O que se seguem so exemplos de cdigos que se inserem directamente em VBA e que me tm sido teis.

S ELECCIONAR UMA CLULA


Cdigo:Range("endereo pretendido").SelectExemplo:Range("p2")

S ELECCIONAR UM INTERVALO DE CLULAS


Cdigo:Range("primeira clula:ltima clula").SelectExemplo:Range("A1:D89")

S ELECCIONAR COLUNA ( S ) E LINHAS *


Cdigo:Columns("letra da primeira coluna:letra da segunda coluna").Select

Exemplo1:Columns ("A:A") s selecciona a A Exemplo2:Columns ("A:C") selecciona A, B e C


Exemplo3:Columns ("A;C") selecciona A e C
Para linhas s substituir Columns por Rows e as letras por nmeros.

S ELECCIONAR TODAS AS CLULAS


Cells.Select

S ELECCIONAR TABELAS CUJA LTIMA LINHA VARIVEL


Dim lastRow As Long
lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
Range("A1:C" & lastRow).Select
Nota: na segunda linha utilizou-se a letra A porque todos os dados da tabela em questo tm algo escrito na coluna A. Pode, no
entanto, ser a coluna C o que interessa escolher uma coluna em que todas as linhas tm algo inserido

S ELECCIONAR UMA FOLHA ESPECFICA


Sheets("Nome da folha").Select

S ELECCIONAR A PRIMEIRA FOLHA DO L IVRO


Sheets(1).Select

S ELECCIONAR A LTIMA FOLHA DO L IVRO


Sheets(Sheets.Count).Select

S ELECCIONAR A PRXIMA OU A FOLHA ANTERIOR * DO L IVRO


ActiveSheet.Next.Select
* Para seleccionar a anterior basta em vez de Next escrever Previous

S ELECCIONAR TODAS AS FOLHAS DE UM LIVRO


ActiveWorkbook.Sheets.Select

8
Sofia S Macros & VBA: A Magia do Excel

I NSERIR UMA NOVA FOLHA NO FINAL DE TODAS AS FOLHAS


Sheets.Add After:=Sheets(Sheets.Count)

E SCREVER ALGO NUMA CLULA ESPECFICA


Range("P10") = "Sofia"

S URGIR UMA CAIXA DE DILOGO COM UMA INFORMAO


Cdigo:MsgBox "Mensagem a aparecer"Exemplo:MsgBox "Bom dia!!!"

S URGIR UMA CAIXA DE DILOGO COM UMA PERGUNTA CUJA RESPOSTA SE


INSERE NUMA CLULA
Cdigo:Range(nome da clula onde se pretende a resposta).Value = InputBox (Pergunta a ser realizada)
Exemplo:Range("p2").Value = InputBox("Pretende filtrar Despesas ou Pagamentos?")

S URGIR UMA CAIXA DE DILOGO PARA SE INSERIR O NOME A DAR FOLHA


ABERTA
ActiveSheet.Name = InputBox("Qual o nome pretendido para a sheet?")

I NSERIR UM NOVO LIVRO


Workbooks.Add

D ESACTIVAR MENSAGENS DO E XCEL


Application.DisplayAlerts = False
(esta informao coloca-se no inicio da Macro mas no fim da Macro tem que aparecer o cdigo seguinte)
Application.DisplayAlerts = True

G RAVAR ALTERAES A UM FICHEIRO


ActiveWorkbook.Save

F ECHAR UM FICHEIRO DO E XCEL GRAVANDO AS ALTERAES


ThisWorkbook.Close savechanges:=True

F ECHAR UM FICHEIRO DO E XCEL NO GRAVANDO AS ALTERAES


ThisWorkbook.Close savechanges:=False

D EFINIR A M ACRO PARA SURGIR MAL UM DETERMINADO LIVRO SEJA


ABERTO
Exemplo
Cdigo
SubAuto_Open()
Sub Auto_Open()
Msgbox "Bom dia
Cdigo a executar
Alegria!!!"
End Sub
EndSub
E NVIAR O FICHEIRO ABERTO POR EMAIL
Cdigo
ActiveWorkbook.SendMail recipients:="endereo email do destinatrio"
Exemplo
ActiveWorkbook.SendMail recipients:="sofiasaxls@gmail.com"

9
Macros & VBA: A Magia do Excel Sofia S

P ROTEGER E DESPROTEGER * A S HEET COM UMA P ALAVRA P ASSE


Cdigo
Password = "Password a utilizar"
ActiveSheet.Protect Password, True, True, True
Exemplo
Password = "1234"
ActiveSheet.Protect Password, True, True, True
* Para desproteger basta alterar a palavra Protect por Unprotect

C RIAR T ABELAS D INMICAS COM VBA


Fonte: http://analysistabs.com/
Department Region Profit

109 5 119000

107 3 64000

109 2 12000

Sub sbCreatePivot()

'Declaration
Dim ws As Worksheet
Dim pc As PivotCache
Dim pt As PivotTable

'Adding new worksheet


Set ws = Worksheets.Add

'Creating Pivot cache


Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, "Sheet1!R1C1:R10C3")

'Creating Pivot table


Set pt = pc.CreatePivotTable(ws.Range("B3"))
'Setting Fields
With pt
'set row field
With .PivotFields("Department")
.Orientation = xlRowField
.Position = 1
End With
'set column field
With .PivotFields("Region")
.Orientation = xlColumnField
.Position = 1
End With
'set data field
.AddDataField .PivotFields("Profit"), "Sum of Profit", xlSum
End With
End Sub

10
Sofia S Macros & VBA: A Magia do Excel

11
Macros & VBA: A Magia do Excel Sofia S

Sofia S
sofiasaxls@gmail.com
+351 968 115 800

12