Excel VBA 2016
Copyright © 1998 by TREINASOFT BRASIL LTDA. Rua Doutor Diogo de Faria, 123 (Vila Clementino) Tel.: (11) 5573-4711
CEP: 04037-000 São Paulo - SP
Impresso no Brasil/Printed in Brazil
Co-autoria e consultoria técnica: Adriano S. Barbosa Capa: Adriano S. Barbosa
Todos os direitos reservados. Proibida a reprodução, mesmo parcial, por qualquer processo, seja mecânico, eletrônico, fotocópia, gravação, digitalização ou outros sem prévia autorização escrita da TreinaSoft Brasil Ltda.
A violação dos direitos de autor (Lei nº 5.988/73) é crime estabelecido pelo artigo 184 do Código Penal.
Todas as marcas citadas são propriedade de seus respectivos fabricantes.
Excel VBA 2016 Excel VBA 2016 ... 4 Introdução ... 5 Objetos ... 6 Propriedades e métodos ... 6 Módulos ... 7 Procedimentos ... 7
O que são Macros ... 8
Ativando a guia Desenvolvedor ... 9
Segurança de Macro ... 10
Gravador de Macros ... 13
Dicas (Macro) ... 14
Gravação Absoluta e Relativa ... 15
Atribuindo Macros a botões ... 16
Conhecendo o Editor VBE ... 17
Analisando o código ... 20
Indentação de código ... 24
Hierarquia de Objetos no Excel ... 25
Variáveis ... 32
Escopo de Variáveis ... 33
Arrays ... 42
Estruturas de Controle ... 43
Estruturas de Decisão ... 44
Estrutura If... Then ... 45
Estrutura If... Then... Else ... 46
Excel VBA 2016
Estrutura Select Case ... 50
Estruturas de Repetição ... 53
Estrutura For ... Next ... 54
Estrutura Do … Loop ... 56
Estrutura Do While … Loop ... 57
Estrutura Do ... Loop While ... 59
Estrutura Do Until … Loop ... 60
Estrutura Do ... Loop Until ... 61
Instrução Exit ... 63
Funções do VBA ... 64
Funções de Data e Hora ... 65
Funções de Textos ... 66
Criando Funções ... 67
Funções x Macros ... 68
UserForms ... 70
Inserindo um UserForm ... 72
Botões da caixa de ferramentas ... 74
Integração entre Aplicativos ... 76
Fazendo referência ao Microsoft Word ... 77
Fazendo referência ao Microsoft Graph ... 78
Fazendo referência ao Microsoft Outlook ... 88
Integração entre o Excel e o Access ... 92
Excel VBA 2016
Excel VBA 2016
Existem situações onde não conseguimos resolver um determinado problema, simplesmente utilizando os comandos e fórmulas do Excel. Nessas situações podemos fazer o uso do
VBA – Visual Basic for Applications.
O VBA é a linguagem de programação para todos os aplicativos do Microsoft Office: Word, Excel, Access e PowerPoint.
Iremos aprender inicialmente sobre os componentes da linguagem, Macros (o que é e para que serve) e sobre os fundamentos da linguagem VBA.
Excel VBA 2016
Introdução
O VBA é um ambiente completo de desenvolvimento, consistente com a versão de plataforma única do Visual Basic e compartilhada por todos os aplicativos do Microsoft Office. O Visual Basic interpreta um conjunto especial de comandos denominado biblioteca de objetos do Excel. O Visual Basic que vem com o Excel não é a única linguagem que poderá comunicar-se com a biblioteca de objetos. Qualquer linguagem que ofereça suporte à automação poderá controlar o Excel. Alguns componentes essenciais da linguagem VBA para Excel são, a seguir, destacados e conceituados:
Excel VBA 2016
Objetos
Um objeto é um tipo especial de variável que contêm dados e códigos e representa um elemento específico no Excel. O VBA suporta um conjunto de objetos que correspondem diretamente aos elementos do Microsoft Excel.
Por exemplo, o objeto Workbook representa uma pasta de trabalho, o objeto Worksheet representa uma planilha e o objeto Range representa um intervalo de células.
Uma pasta de trabalho, no Microsoft Excel, corresponde a um arquivo que pode conter diversas planilhas e folhas de gráficos ou planilhas de gráficos.
Propriedades e métodos
Para realizar uma tarefa o VBA retorna um objeto que representa o elemento apropriado do Excel e depois o manipula usando as propriedades e métodos daquele objeto.
As propriedades são características ou atributos de um objeto e os métodos são ações que os objetos podem executar.
Excel VBA 2016
Módulos
O código dentro de um módulo é organizado em procedimentos. Um módulo é um conjunto de procedimentos que realiza tarefas específicas. Por exemplo, procedimentos que executam várias tarefas contábeis podem ser agrupados em um módulo.
Procedimentos
Um procedimento é uma unidade de código localizada entre instruções Sub e End Sub ou entre instruções Function e
End Function que realiza uma tarefa.
Um procedimento desempenha uma tarefa específica. Um procedimento Function pode retornar valor, ao passo que um procedimento Sub não retorna valor.
Guarde bem esses nomes. Iremos falar e trabalhar muito em nosso curso com os componentes essenciais, porém, no momento só tivemos uma visão geral dos mesmos.
Excel VBA 2016
O que são Macros
Caso você execute uma tarefa diversas vezes no Excel, é possível automatizá-la com uma macro. Uma macro é uma sequência de comandos e funções armazenadas em um módulo de código do VBA e pode ser executada sempre que precisarmos executar a tarefa.
Com o uso de macros, temos um ganho de produtividade considerável, ao evitar que tenhamos que executar manualmente, os diversos passos de uma tarefa.
Existem duas maneiras distintas para a criação de macros:
Gravador de Macros: Nesse caso o Excel grava cada uma das
ações que farão parte da Macro e transforma essas ações nos comandos VBA equivalentes. Quando a macro for executada, os comandos VBA é que serão efetivamente executados. Cada comando VBA corresponde a uma ação efetiva da macro.
Criar Macro usando VBA: Podemos também criar as macros
digitando os comandos VBA necessários. Isto é feito utilizando o Editor do VBA.
Excel VBA 2016
Ativando a guia Desenvolvedor
Para trabalharmos com os comandos da linguagem VBA, precisaremos habilitar a guia Desenvolvedor na Faixa de Opções do Microsoft Excel 2016.
Estando no Microsoft Excel 2016:
CLIC na guia
CLIC em
CLIC em no lado esquerdo da tela.
CLIC no botão
Excel VBA 2016
Segurança de Macro
No Microsoft Excel, você pode alterar as configurações de segurança de macro para controlar quais macros serão executadas e em que circunstâncias quando abrir uma pasta de trabalho. Por exemplo, você pode permitir que as macros sejam executadas com base no fato de elas serem assinadas digitalmente por um desenvolvedor confiável (uma pessoa que escreve código de programação).
A lista a seguir resume as diversas configurações de segurança de macros. Em todas as configurações, se o software antivírus executado com o Microsoft Office 2016 estiver instalado e a pasta de trabalho contiver macros, essa pasta de trabalho será examinada antes de ser aberta para verificar a presença de vírus conhecidos.
Desabilitar todas as macros sem notificação: Clique nessa
opção se não confiar nas macros. Todas as macros nos documentos e todos os alertas de segurança sobre macros serão desabilitados. Se houver documentos contendo macros não assinadas nas quais você não confia, será possível colocar esses documentos em um local confiável. Os documentos em locais confiáveis podem ser executados sem serem verificados pelo sistema de segurança da Central de Confiabilidade.
Excel VBA 2016
Desabilitar todas as macros com notificação: Esta é a
configuração padrão. Clique nesta opção se desejar desabilitar as macros e receber alertas de segurança caso seja detectada alguma macro. Dessa forma, você poderá decidir quando habilitar essas macros individualmente.
Desabilitar todas as macros, exceto as digitalmente assinadas: Esta configuração é igual à opção Desabilitar todas
as macros com notificação. A única diferença é que, se a macro for assinada digitalmente por um fornecedor confiável, ela poderá ser executada se você confiar no fornecedor; caso contrário, você será notificado. Portanto, você pode optar entre habilitar essas macros assinadas ou confiar no fornecedor. Todas as macros não assinadas são desabilitadas sem notificação.
Habilitar todas as macros (não recomendado; códigos possivelmente perigosos podem ser executados): Clique
nessa opção para permitir a execução de todas as macros. O uso dessa configuração torna seu computador vulnerável a códigos potencialmente maliciosos e não é recomendado.
Excel VBA 2016
Confiar no acesso ao modelo de objeto do projeto do VBA: Essa configuração serve para desenvolvedores e é usada
para bloquear deliberadamente ou para permitir o acesso programático ao modelo de objetos do VBA a partir de qualquer cliente de automação. Em outras palavras, ela fornece uma opção de segurança para o código que é gravado para automatizar um programa do Office e manipular programaticamente o ambiente e o modelo de objetos do Microsoft VBA (Visual Basic for Applications).
Trata-se de uma configuração por usuário e aplicativo que nega o acesso por padrão. Essa opção de segurança torna mais difícil para programas não autorizados criarem um código de autorreplicação que possa prejudicar os sistemas dos usuários finais. Para que qualquer cliente de automação possa acessar o modelo de objetos do VBA programaticamente, o usuário que executa o código deve conceder acesso explicitamente. Para ativar o acesso, marque a caixa de diálogo.
Excel VBA 2016
Gravador de Macros
O Foco de nosso curso não é a criação de códigos através do gravador de macros, porém, iremos em nosso primeiro contato com o VBA, criar uma macro através do gravador para começarmos a nos ambientar com o ambiente de códigos VBA. Como conhecer todas as propriedades e métodos do VBA é praticamente impossível, usaremos o gravador para nos auxiliar na criação de códigos e processos de programação. Para acessar o Gravador de Macros, acessamos a guia
e clicamos no botão .
Saiba também que ao trabalharmos com planilhas com macros, devemos gravar a planilha como uma planilha habilitada para macros, que é um tipo de arquivo .xlsm.
Excel VBA 2016
Dicas (Macro)
Antes de gravar uma macro, planeje as etapas e os comandos que quer que ela execute. Se cometer erros durante a gravação da macro, as correções feitas também serão gravadas, resultando em linhas de código desnecessárias que, embora não sejam visíveis ao usuário final, tornam o código confuso (para o programador que for modificá-la) e em certos casos pode resultar em um processo mais lento.
Portanto, “ensaie” algumas vezes os passos, antes de começar a gravar. Se preferir, anote os passos em uma folha de rascunho, conforme for executando os procedimentos, como se fossem um roteiro deste curso, para que possam ajudá-lo a gravar a macro corretamente.
Excel VBA 2016
Gravação Absoluta e Relativa
Ao criar uma macro gravada no Excel, as ações que você executa podem ser registradas de forma absoluta ou relativa. No modo de gravação relativa, as células que você seleciona são registradas a partir de sua posição relativa à célula selecionada no início da gravação da macro. Elas são indicadas pela notação R[x]C[y], onde R[x] indica a distância entre as linhas (em inglês, rows) das células, e C[y], de suas colunas (em inglês, columns). Por exemplo, a referência R[-2]C[1] indica uma célula que está duas linhas acima (-2) e uma coluna à direita (+1) da célula selecionada.
Já no modo de gravação absoluta, a posição exata das células selecionadas no decorrer da gravação é guardada. Elas estão associadas à notação A1.
Ao elaborar uma macro, você deverá escolher o modo de gravação mais útil antes de executar suas ações: ao gravar uma macro que fará referência a uma célula específica de sua planilha, utilize gravação absoluta; caso contrário, use a gravação relativa.
Lembre-se: Para alternar entre a forma de gravação clicamos
Excel VBA 2016
Atribuindo Macros a botões
O Excel possui uma série de controles que possibilitam facilitar a inserção de dados nas células ou mesmo a execução de macros.
Esses controles são encontrados na guia no grupo Controles.
Normalmente, associaremos as macros criadas ao controle botão de Comando .
Excel VBA 2016
Conhecendo o Editor VBE
O VBE (Visual Basic Editor) é o ambiente de programação do VBA. O VBE facilita a criação de código. Dentro do VBE são oferecidas uma série de facilidades e dicas para que o programador possa encontrar facilmente os objetos disponíveis, bem como os métodos e propriedades de cada objeto.
Se não tivéssemos um ambiente de programação teríamos que lembrar a sintaxe de todos os comandos, dos métodos e propriedades dos objetos, algo que seria praticamente impossível, visto que com o VBA temos acesso a milhares de objetos, comandos e funções.
Para acessá-lo: Clicamos na guia e depois
clicamos no botão , ou ainda podemos acessar usanda a tecla de atalho ALT + F11.
Excel VBA 2016 Editor VBE
Essa é a janela do editor do Visual Basic, vamos conhecer um pouco sobre ela:
Na parte esquerda dessa janela iremos destacar duas áreas: - Janela Project Explorer: Nessa janela são exibidos os vários elementos que fazem parte da pasta de trabalho atual. São exibidas as planilhas e módulos da pasta de trabalho (arquivo .xlsx) carregado no Excel.
Caso essa janela não esteja ativa, basta clicarmos no menu
Exibir, opção Project Explorer ou pela combinação de teclas
Excel VBA 2016
- Janela Propriedades: Exibe as propriedades do objeto selecionado na janela Project Explorer.
Caso essa janela não esteja ativa, basta clicarmos no menu
Exibir, opção Janela Propriedades ou pela tecla de atalho F4.
Na parte direita da janela do editor do VBA, temos a área de códigos, ou também chamada de Editor de códigos, essa é a área onde iremos digitar nossos códigos.
Normalmente, entraremos no editor do VBA e está área estará vazia, pois, possivelmente estará mostrando alguma área sem códigos, para exibir os códigos de nossos objetos, basta darmos um duplo clique em um item do Project Explorer, criar um novo módulo ou um duplo clique em um objeto de formulário por exemplo.
Excel VBA 2016
Analisando o código
Observe a imagem abaixo:
Excel VBA 2016
As linhas que iniciam com um apóstrofo (e que provavelmente estão em verde), são linhas de comentários. Nós vamos nos acostumar a utilizar muitos comentários em nossos códigos, os comentários servem para registrar alguma informação dentro do código, sem interferir na codificação. A linha 1 refere-se a seleção do intervalo de células A2 até C2 da planilha Cadastro. Esse comando é feito através do objeto
Range que representa uma célula, uma linha, uma coluna ou
conjunto contínuo ou não de células. Junto ao objeto Range, observamos também o método Select, que indica ao objeto o que é para ser feito.
Excel VBA 2016
A linha 2 está indicando ao VBA que o conteúdo selecionado é para ser copiado (enviado à área de transferência).
Selection.Copy
A linha 3 nos mostra o objeto Sheets, esse objeto está fazendo referência a planilha (no exemplo a planilha Banco de Dados) e o seu método está indicando para que ela seja selecionada.
Sheets("Banco de Dados").Select
A linha 4 está indicando o comando Ir para, através do objeto que refere-se ao aplicativo.
Application.Goto Reference:="R1048576C1"
A linha 5 está indicando ao VBA a movimentação de nosso cursor selecionando a primeira célula preenchida acima.
Selection.End(xlUp).Select
A linha 6 indica a movimentação a partir da referência relativa, usando a propriedade Offset, que nos indica a movimentação uma linha para baixo da posição atual.
ActiveCell.Offset(1, 0).Range("A1").Select
A linha 7 está indicando ao VBA para efetuar a colagem dos dados.
Excel VBA 2016
A linha 8 está cancelando o processo de cópia iniciado na linha 2
Application.CutCopyMode = False
A linha 9 está definindo a célula ativa (a célula que ficou ativa no momento que pressionamos a tecla HOME na gravação)
ActiveCell.Select
A linha 10 faz o mesmo processo da linha 3, a seleção de planilha
Sheets("Cadastro").Select
A linha 11 serve para apagar o conteúdo das células selecionadas.
Selection.ClearContents
A linha 12 define a célula ativa. Veja que a forma de definir a célula ativa neste comando, difere do comando da linha 9, pois, o comando feito na linha 9 (pressionar a tecla HOME), foi definido a partir de referências relativas, e o comando da linha foi definido sem o comando de referências relativas.
Range("A2").Select
A última linha, End Sub, indica que o procedimento está sendo encerrado aqui.
Excel VBA 2016
Indentação de código
Para uma melhor organização de nossa programação, iremos desenvolver no decorrer de nossos capítulos alguns hábitos para uma apresentação de nossos códigos, o primeiro hábito que iremos assumir é a utilização da indentação de nosso código. Indentar nada mais é do que recuar o nosso texto (usando a tecla TAB) indicando que os elementos hierarquicamente dispostos tem o mesmo avanço relativo à posição. (Também iremos encontrar o termo com identação ou endentação). Iremos também além dos recuos, aplicar algumas linhas para que o código não fique muito colado, facilitando a interpretação do mesmo, mas saiba que esses recuos e espaços não irão alterar nada em nossa programação.
Excel VBA 2016
Hierarquia de Objetos no Excel
Vamos conhecer o conceito mais importante quando se trata de programação VBA no Excel, a hierarquia de objetos.
A hierarquia de objetos do Excel irá determinar o nível de acesso a cada objeto, onde no caso do Excel, teremos os objetos, seus métodos e propriedades, sendo esse modelo também chamado de biblioteca de objetos.
Objetos
Um objeto representa um elemento da planilha do Excel ou mesmo o próprio Excel. Por exemplo, o objeto de nível mais alto na hierarquia de objetos do Excel é o objeto Application. Este objeto representa o próprio Excel, ou seja, o aplicativo Excel. Descendo um pouco mais na hierarquia, temos o objeto
Workbook. O objeto Workbook representa uma pasta de
trabalho do Excel (arquivo xlsx, por exemplo).
Dentro de uma pasta de trabalho temos planilhas. As planilhas são representadas pelo objeto Worksheet. Dentro de uma planilha possuímos dados em células ou faixas de células. Uma faixa de células é representada pelo objeto Range.
Cada objeto da hierarquia de objetos do Excel possui métodos e propriedades. Os métodos são utilizados para executar determinadas ações, por exemplo, abrir uma planilha, selecionar uma faixa de células, etc. As propriedades descrevem características dos objetos.
Excel VBA 2016 Biblioteca de Objetos
Os diversos objetos disponíveis estão agrupados em Bibliotecas. Uma biblioteca é um conjunto de objetos que são utilizados para uma determinada função ou atividade.
Mesmo que não conseguirmos lembrar todos os métodos e propriedades dos objetos, o VBA nos dá uma forma de acessar essas informações, o Pesquisador de objeto.
Para acessarmos o pesquisdor de objetos, devemos acessar a área de códigos do VBA, clicar no menu Exibir e depois clicar na opção Pesquisador de objeto.
Através dessa janela podemos pesquisar os objetos, seus métodos e propriedades.
Nesse painel estão sendo exibidos todos os métodos (indicados pelo ícone ), propriedades (indicadas pelo ícone ) e eventos (indicados pelo ícone ) do objeto que selecionamos (Application).
Podemos obter ajuda de qualquer um dos itens do Pesquisador, selecionando o item e apertando a tecla F1, dessa forma obtemos uma descrição detalhada do item selecionado.
Excel VBA 2016 Objeto Application
O objeto Application representa o aplicativo Excel, sempre que quisermos que o Excel faça alguma coisa ou quisermos mudar as propriedades do Excel, usaremos este objeto, através dele podemos configurar o Excel em termos de visualização, execuções e outras funcionalidades.
Esse é um objeto muito importante que possui muitas propriedades e métodos.
ActiveWindow
Quando visualizamos a hierarquia de objetos do VBA, observamos que uma série de objetos possui outros objetos de hierarquia menor.
Quando formos trabalhar com esses objetos iremos perceber que não precisaremos indicar o objeto de hierarquia maior, basta indicarmos o objeto que iremos utilizar e suas propriedades. Esse é o caso do objeto ActiveWindow, que faz parte da hierarquia de objetos do Application.
Excel VBA 2016 Sub Auto_Open
Todo comando que precisarmos que seja habilitado quando nossa pasta de trabalho for aberta pode ser chamado pelo evento Auto_Open.
Toda rotina que for inserida dentro da sub do Auto_Open será executada no momento da abertura da pasta de trabalho.
Excel VBA 2016 Objeto Range
O objeto Range pode ser definido como o objeto que realmente faz o trabalho no Excel. Falando de uma maneira simples, o objeto Range representa uma ou mais faixas de células em uma planilha. Levando em conta que a maioria do trabalho do Excel está relacionado a valores em faixa de células, fica claro a importância deste objeto.
Este objeto por ser utilizado para fazer referência ao intervalo atualmente selecionado, a um intervalo específico de células, como A1:D30, ou vários intervalos como A1:D30 mais
G1:G30 mais K50 e assim por diante. Em resumo, o objeto
Range faz referência a um conjunto de células da planilha, conjunto definido quando declaramos o objeto.
Excel VBA 2016 Declarando um objeto Range
Existem diferentes formas de retornar um objeto Range. Por exemplo, a propriedade Range está disponível nos objetos Application e Worksheet, sendo então formas de retornarmos o objeto Range.
Podemos também retornar o objeto Range, utilizando a propriedade Cells do objeto Application, a propriedade Cells retornar o objeto Range representando todas as células da planilha ativa, porém, devemos tomar cuidado com essa propriedade, pois, se o documento ativo não for uma planilha, por exemplo, uma folha de gráfico, essa propriedade não irá funcionar.
Propriedades do objeto Range
Existe uma grande quantidade de propriedades para o objeto Range, vamos conhecer algumas delas.
Cells: Está propriedade retorna uma coleção de células,
propriedade esta definida quando passados os seus parâmetros.
Rows: Está propriedade retorna uma coleção de linhas do
objeto Range.
Columns: Está propriedade retorna uma coleção de colunas
Excel VBA 2016 Objeto Worksheet
O objeto Worksheet representa na hierarquia de objetos do Excel as planilhas dentro de uma pasta de trabalho. Qualquer necessidade referente às planilhas será feita utilizando o objeto Worksheet.
Excel VBA 2016
Variáveis
Vamos falar agora sobre o que são Variáveis, para que servem e como utilizá-las.
Uma variável é um espaço reservado na memória do computador, representado por um nome, onde pode ser armazenado um valor e alterado a qualquer momento, daí o nome Variável.
Um nome de identificador deve começar por uma letra, ser único dentro do mesmo nível de escopo, não pode conter um espaço entre caracteres do nome e nem pode ser igual a uma palavra reservada da linguagem ou que pertence à sintaxe da linguagem. Não é permitido o uso de caracteres especiais, exceto de alguns símbolos (_, $, %, #, @, &, !) quando utilizados como último caractere do nome.
O símbolo sublinhado (_) também pode ser usado entre palavras do nome da variável.
Excel VBA 2016
Escopo de Variáveis
O escopo de uma variável define em que partes do código a variável pode ser utilizada. Em VBA, podemos ter os seguintes escopos para as variáveis:
Escopo de Módulo: Uma variável declarada dentro de um
Módulo de código VBA, mas fora de qualquer Procedimento (ou seja, na seção Geral do módulo). Com isso a variável pode ser utilizada dentro de qualquer bloco de código do Módulo, inclusive dentro dos Procedimentos e funções do módulo. Uma variável declarada em nível de Módulo existe enquanto o Módulo estiver sendo executado. São as variáveis declaradas na seção de Declarações do Módulo.
Escopo de procedimento: A variável somente pode ser
utilizada, dentro do procedimento onde esta é declarada. Se tentarmos utilizar a variável fora do procedimento, onde ela foi declarada, não teremos acesso a ela. Uma variável declarada em nível de procedimento existe enquanto o procedimento estiver sendo executado.
Para lembrarmos: Um procedimento é um bloco de código
que pode ser chamado em qualquer ponto do Módulo. Ao chamarmos um procedimento, a execução é deslocada para dentro do procedimento. Após concluído o procedimento, a execução segue com a linha seguinte à que chamou o procedimento.
Excel VBA 2016
Escopo público: Variáveis públicas têm o escopo mais amplo
de todas as variáveis. Uma variável pública é reconhecida por cada módulo da pasta de trabalho ativa. É declarada uma variável pública, como uma variável de nível de módulo, na parte superior do módulo, acima da primeira definição do procedimento. Uma variável pública não pode ser declarada dentro de um procedimento.
Declarando Variáveis
Uma variável pode ser declarada, usando as seguintes palavras-chave para definir seu escopo ou local (procedimento ou módulo) onde ela poder ser acessada ou manipulada:
Dim ou Static (no procedimento)
Dim ou Private (no módulo)
Excel VBA 2016
Dim – O valor da variável é retido apenas enquanto o
procedimento no qual ela foi declarada estiver em execução.
Static – A variável preserva o valor entre as chamadas ao
procedimento.
Private – O valor da variável fica disponível a todos os
procedimentos dentro do módulo onde a variável foi declarada.
Public – A variável pode ser acessada pelos procedimentos de
vários módulos de uma pasta de trabalho.
Instrução Option Explicit
Você pode declarar implicitamente uma variável no VBA, simplesmente utilizando-a em uma instrução de atribuição. Todas as variáveis declaradas implicitamente são do tipo Variant. As variáveis do tipo Variant exigem mais recursos de memória que a maioria das outras variáveis. O seu aplicativo será mais eficiente se você declarar as variáveis explicitamente e com um tipo de dados específico. A declaração explícita de todas as variáveis reduz a incidência de erros de conflitos de nomenclatura e de digitação.
Excel VBA 2016
Para impedir que o VBA faça declarações implícitas, você pode inserir a instrução Option Explicit em um módulo antes de todos os procedimentos. Essa instrução obriga-o a declarar explicitamente todas as variáveis dentro do módulo. Caso um módulo inclua a instrução Option Explicit, ocorrerá um erro em tempo de compilação quando o VBA encontrar um nome de variável que ainda não tenha sido declarada ou que apresente algum erro de digitação.
Excel VBA 2016 Tipos de dados
O tipo de dados de uma variável determina a quantidade de memória que ela ocupará, em bytes, e o modo de armazenamento. O VBA opera com os seguintes tipos básicos:
Variant – Tipo Genérico
Boolean – Verdadeiro ou Falso Byte – Número inteiro de 0 a 255
Integer – Número inteiro de -32.768 a 32.767
Long – Número inteiro de -2.147.483.648 a 2.147.783.647 Double – Número entre 1,79769313486232E308 a
-4.94065645841247E–324 ou 1,79769313486232E308 a 4.94065645841247E–324
Currency – Quantia monetária entre
-922.337.203.685.477,5808 e 922.337.203.685.477,5807
Date – Data entre 1/Janeiro/0100 e 31/Dezembro/9999
String – Texto de tamanho variável que pode conter até
Excel VBA 2016
Em resumo podemos definir o seguinte em relação aos tipos de dados:
Uma variável que conterá número inteiro pode ser declarada como Integer ou Long.
Uma variável que conterá números fracionários pode ser declarada com o tipo de dado Single, Double ou Currency. Uma variável que conterá um conjunto de caracteres
alfanuméricos pode ser declarada com o tipo de dados String. Uma variável que contém valor lógico (verdadeiro ou falso) pode ser declarada com o tipo de dados Boolean. O valor padrão é False.
Uma variável que contém valores de data e hora deve ser declarada com o tipo de dados Date.
Uma variável que contém uma referência a um objeto do Excel pode ser declarada com tipo de dados Object. Para atribuir um objeto a uma variável-objeto, deve-se usar a instrução
Set.
Uma variável do tipo Variant permite o armazenamento de qualquer tipo de dado.
Excel VBA 2016 Operadores
Iremos utilizar uma série de operadores em nossos códigos VBA.
Os operadores são divididos em Operadores Aritméticos,
Operadores Relacionais, Operadores de Concatenação e Operadores Lógicos.
Vamos conhecer um pouco sobre os Operadores:
Operadores Aritméticos: Utilizamos os operadores aritméticos quando queremos realizar cálculos usando o VBA.
Operador Significado
^ Potenciação
* Multiplicação
/ Divisão
\ Inteiro da Divisão Mod Resto da Divisão
+ Soma
Excel VBA 2016
Operadores Relacionais: Utilizamos os operadores relacionais para fazermos comparações entre valores no VBA.
Operador Significado > Maior do que >= Maior ou igual a < Menor do que <= Menor ou igual a = Igual a <> Diferente de
Operadores de Concatenação: Utilizamos os operadores de
concatenação para concatenar e adicionar sequências de caracteres de duas expressões:
Operador Significado
& Concatenar
Excel VBA 2016
Operadores Lógicos: Utilizamos os operadores lógicos para
trabalharmos com valores lógicos no VBA.
Operador Significado
And E (Conjunção)
Or Ou (Disjunção)
Not Não (Negação)
XOR Ou Exclusivo (Usado quando queremos que a lógica do Or seja para que um dos casos seja
verdadeiro e não em ambos).
Excel VBA 2016
Arrays
Um Array (ou Matriz) é uma variável que representa um conjunto de variáveis do mesmo tipo.
Cada elemento da matriz pode ser distinguido de outros elementos por um ou mais índices inteiros.
Vamos analisar nosso código: A linha Dim Estados(4) As
String está fazendo a declaração da variável Estados
indicando entre parênteses a sua dimensão (quatro valores), saiba que os valores dos arrays são chamados de índices e são iniciados em zero quando estamos fazendo referência a eles. As próximas quatro linhas estão definindo o valor da variável Estados através dos seus índices.
Já a linha do MsgBox mostrará os valores quando a sub for executada.
Excel VBA 2016
Estruturas de Controle
As estruturas de controle determinam o curso de ações de um algoritmo ou programa.
A lógica do procedimento flui através das instruções da esquerda para a direita e de cima para baixo. As instruções de controle, ou seja, os comandos que controlam a tomada de decisões e as iterações podem alterar a ordem de execução das instruções.
O Visual Basic, e, portanto o VBA, é uma linguagem de programação estruturada, ou seja, segue uma estrutura ou um fluxo, ou seja, as ações de cima são feitas antes de serem feitas as ações de baixo.
Mas e se quisermos criar uma quebra nesse fluxo? Podemos pensar em milhares de situações onde isso pode nos ser útil, como por exemplo, executar um conjunto de cálculos apenas se determinada condição for verdadeira. Iremos conhecer agora um conjunto de estruturas que nos permitirão quebrar esse fluxo imposto pela programação.
Excel VBA 2016
Estruturas de Decisão
Vamos começar a conhecer sobre as estruturas de controle, começando com as Estruturas de Decisão.
As estruturas de decisão são comandos/estruturas que realizam um teste lógico, e executam determinados comandos quando o teste resultar verdadeiro, ou um conjunto diferente de comandos, quando o teste resultar em falso.
Excel VBA 2016
Estrutura If... Then
Vamos começar com a estrutura If... Then.
A estrutura If... Then é uma das estruturas de decisão mais conhecida. Toda linguagem de programação implementa esta estrutura. É utilizada para executar determinados comandos caso uma condição seja verdadeira. A forma geral desta estrutura é a seguinte: If condição Then Comando 1 Comando 2 ... Comando n End If
Esta estrutura de controle do If... Then é a estrutura mais simples, onde temos somente a condição e determinados comandos como resultado para a condição ser verdadeira.
Excel VBA 2016
Estrutura If... Then... Else
A estrutura If... Then... Else, acrescenta mais uma possibilidade a estrutura If... Then. É utilizada para executar certos comandos, caso uma condição for verdadeira, ou um conjunto diferente de comandos, caso a condição for falsa. . A forma de sua estrutura é a seguinte:
If condição Then Comando 1 Comando 2 ... Comando n Else Comando 1 Comando 2 ... Comando n End If
Excel VBA 2016
Estrutura If... Then... ElseIf… Else
A estrutura If... Then... ElseIf, nos dá um poder maior, para testarmos diversas possibilidades, isto é, para fazermos vários testes e executarmos diferentes comandos com base no resultado dos testes. Esta estrutura é utilizada quando precisamos realizar mais do que um teste lógico. Neste caso para cada novo teste que se faça necessário, utilizamos um ElseIf.
A forma geral desta estrutura é a seguinte:
If condição Then
(Comandos a serem executados, caso a condição seja verdadeira) Comando 1 Comando 2 ... Comando n ElseIf condição 2
(Comandos a serem executados, caso a condição 2 seja verdadeira) Comando 1 Comando 2 ... Comando n Continua...
Excel VBA 2016 ElseIf condição n
(Comandos a serem executados, caso a condição n seja verdadeira) Comando 1 Comando 2 ... Comando n Else
(Comandos a serem executados, caso nenhuma das condições anteriores seja verdadeira)
Comando 1 Comando 2 ...
Comando n End If
Excel VBA 2016
Analisando a rotina de códigos da imagem anterior, verificamos que as primeiras linhas declaram três variáveis, sendo uma como valor inteiro e as outras duas para valores monetários.
Para as variáveis salario e cargo, estamos indicando que serão atribuídos valores através das Inputbox.
A instrução If está analisando em sua primeira linha se o cargo é igual a 1, caso essa condição for verdadeira, o bônus será de 15% do salário, caso a condição for falsa o primeiro
ElseIf será testado, caso essa condição for verdadeira o bônus
será de 10% do salário.
Caso a condição de ElseIf também for falsa, será testado o segundo ElseIf, caso essa condição for verdadeira o bônus será de 8% do salário, caso nenhuma das condições for verdadeira, teremos o Else sendo executado indicando que o bônus será 0
Já o MsgBox irá nos mostrar conforme a informação que for passada no InputBox qual foi o cargo digitado, qual o salário que foi passado e quanto foi o bônus das informações passadas.
Excel VBA 2016
Estrutura Select Case
A estrutura Select Case é usada quando temos que verificar muitas condições, neste caso, embora você ainda possa usar a estrutura If ... Then ... Else ela poderia se tornar muito complexa e difícil de tratar.
A estrutura Select Case, executa um dos diversos grupos de instruções, dependendo do valor da expressão.
A forma geral desta estrutura é a seguinte:
Select Case expressão Case expres1
Código... relativo à expres1
Case expres2
Código... relativo à expres2
Case Else
Código... relativo ao Else
Excel VBA 2016
Os valores que podem ser utilizados nas expressões do Select Case, podem ser usados da seguinte forma:
Um único valor - Case 3
Uma série de valores separados por vírgulas - Case 4,5,6 Um range de valores expressos como valor1 Até valor2 - Case
7 To 11
Um range teste expresso como teste Is de operador de valor -
Case Is >12
Saiba que testes com valores alfabéticos são Case Sensitive, ou seja, o que for letra maiúscula não é igual ao que for letra minúscula.
Excel VBA 2016
Na imagem acima temos um exemplo de utilização da estrutura Select Case. Começamos declarando uma variável que irá armazenar um valor atribuído pelo usuário através da InputBox criada.
Informado esse valor pelo usuário, o mesmo será avaliado através do Select Case que irá verificar se a letra que foi digitada corresponde a algum dos casos, caso for, será retornada a mensagem da MsgBox correspondente, caso a letra não for de nenhum dos casos, será enviada a mensagem correspondente ao Case Else.
Excel VBA 2016
Estruturas de Repetição
Em determinadas situações, precisamos repetir um ou mais comandos, um número específico de vezes, ou até que uma determinada condição torne-se verdadeira ou falsa.
Por exemplo, pode ser que haja necessidade de percorrer todas as linhas de uma determinada planilha, até que o último registro seja alcançado. Para isso, utilizamos as chamadas estruturas de repetição, ou Laços como são conhecidos.
Excel VBA 2016
Estrutura For ... Next
Este laço é utilizado para repetir um comando um número determinado de vezes. Utilizamos está estrutura quando já sabemos o número de vezes que uma determinada seção de códigos deve ser repetida ou quando o número de repetições é baseado no valor de uma variável. Neste tipo de estrutura, normalmente utilizamos uma variável como contador. Este contador varia de um valor inicial até um valor final. A forma geral desta estrutura é a seguinte:
For contador = inicio To fim incremento Comando 1
Comando 2 ...
Comando n Next
No início a variável contador tem o valor definido. Em cada passagem do laço, a variável contador é incrementada pelo valor definido em incremento. Caso não seja definido um valor em incremento, será utilizado o valor padrão 1.
Excel VBA 2016
Analisando o código da imagem anterior, observamos que iniciamos nossa sub declarando duas variáveis para nosso exemplo.
Em seguida, indicamos o valor inicial para essas variáveis. Em seguida começamos nosso loop For, indicando como contador do laço uma nova variável definida como valor 1. Esse laço vai de 1 (valor da variável i) até 10 (valor da variável num), fazendo a contagem de cada um dos números. A cada mudança de valor é feita a soma da variável Soma com a variável i.
Por fim, temos a caixa de mensagem exibindo o resultado final da variável Soma.
Excel VBA 2016
Estrutura Do … Loop
A estrutura Do ... Loop pode ser utilizada para repetir um trecho de código, enquanto uma condição for verdadeira ou até que uma condição torne-se verdadeira. Usamos para essa estrutura dois operadores condicionais diferentes, o While e o
Until. Esses dois operadores podem ser utilizados de duas
maneiras distintas, no início do laço ou no final do laço, dessa forma teremos quatro situações diferentes de utilização do laço:
Excel VBA 2016
Estrutura Do While … Loop
Dessa forma, estamos utilizando o operador While no início do laço.
Temos a seguinte forma geral para essa estrutura:
Do While condição comando 1 comando 2 ... comando n Loop
Nesta estrutura, enquanto a condição for verdadeira, o código dentro do laço será executado. Quando a condição se tornar falsa, o primeiro comando após o final do laço será executado. Caso a condição for falsa já na primeira vez, o laço não será executado nenhuma vez.
Um cuidado que devemos tomar quando formos definir um laço Do While é que o código dentro do laço deve ser capaz de tornar a condição falsa, caso isso não for possível criaremos um loop infinito, ocasionando um erro de programação em nosso código.
Excel VBA 2016
Analisando a rotina de códigos da imagem anterior, podemos ler o loop Do While da seguinte forma: Enquanto o valor da variável resposta for verdadeiro faça os comandos, pedir o valor do número 1, pedir o valor do número 2, faz o produto do número 1 pelo número 2, exibe uma mensagem informando o resultado do produto e pergunta ao usuário se o mesmo quer fazer uma nova multiplicação, toda vez que o usuário clicar em Sim (vbYes) será executado o loop.
Excel VBA 2016
Estrutura Do ... Loop While
Dessa forma, estamos utilizando o operador While no final do laço.
Temos a seguinte forma geral para essa estrutura:
Do
comando 1 comando 2 ...
comando n Loop While condição
Nesta estrutura, o código dentro do laço será executado pelo menos uma vez, pois, o teste somente é feito no final, e continuará sendo executado enquanto a condição for
verdadeira. Quando a condição se tornar falsa, o primeiro
comando após o laço será executado. Se a condição for falsa o laço será executado uma única vez.
Excel VBA 2016
Estrutura Do Until … Loop
Dessa forma, estamos utilizando o operador Until no início do laço.
Temos a seguinte forma geral para essa estrutura:
Do Until condição comando 1 comando 2 ... comando n Loop
Nesta estrutura, enquanto a condição for falsa, o código dentro do laço será executado. Quando a condição se tornar verdadeira, o primeiro comando após o final do laço será executado. Caso a condição for verdadeira já na primeira vez, o laço não será executado nenhuma vez.
Um cuidado que devemos tomar quando formos definir um laço Do Until é que o código dentro do laço deve ser capaz de tornar a condição verdadeira, caso isso não for possível criaremos um loop infinito, ocasionando um erro de programação em nosso código.
Excel VBA 2016
Estrutura Do ... Loop Until
Dessa forma, estamos utilizando o operador Until no final do laço.
Temos a seguinte forma geral para essa estrutura:
Do
comando 1 comando 2 ...
comando n Loop Until condição
Nesta estrutura, o código dentro do laço será executado pelo menos uma vez, pois, o teste somente é feito no final, e continuará sendo executado enquanto a condição for falsa. Quando a condição se tornar verdadeira, o primeiro comando após o laço será executado. Se a condição for verdadeira o laço será executado uma única vez.
Lembre-se de que devemos tomar o cuidado para que o código dentro do laço deve ser capaz de tornar a condição verdadeira, caso isso não for possível criaremos um loop infinito, ocasionando um erro de programação em nosso código.
Excel VBA 2016
Analisando o nosso código da imagem anterior, observamos que será solicitado um número ao usuário, e conforme o número que o usuário digitar, será feita a soma desses números. A diferença desse laço para o anterior está somente na montagem do Until que foi definido no final do laço, indicando que os comandos da rotina serão executados pelo menos uma vez. O laço será finalizado quando a condição tornar-se verdadeira, ou seja, em nosso exemplo, quando o contador for maior do que o valor definido pelo usuário.
Excel VBA 2016
Instrução Exit
A instrução Exit permite abandonar uma estrutura de controle. Apesar de essa instrução ser conveniente, deve-se restringir seu uso uma vez que o excesso de sua utilização pode dificultar a leitura e a depuração do código.
Para sair diretamente de uma estrutura de repetição For, utiliza-se a instrução Exit For e para sair diretamente de um laço Do usa-se a instrução Exit Do.
Excel VBA 2016
Funções do VBA
O Excel é um programa voltado para o trabalho com as funções. Saiba que podemos usar a maioria dessas funções do Excel diretamente no código VBA.
O que devemos lembrar quando formos utilizar funções no código VBA é que as mesmas devem ser digitadas com o nome em inglês, por exemplo, SUM ao invés de SOMA, VLookup ao invés de PROCV, DATE ao invés de DATA, entre outras.
Excel VBA 2016
Funções de Data e Hora
- Função Date: retorna a data do sistema. - Função Time: Retorna a hora do sistema.
- Função Day: Retorna o dia do mês de uma data especificada. - Função Month: Retorna o mês de uma data especificada. - Função Year: Retorna o ano de uma data especificada. - Função Weeday: Retorna o número do dia da semana de uma data especificada.
- Função WeekdayName: Retorna o nome do dia da semana de uma data especificada.
- Função MonthName: Retorna o nome do mês de uma data especificada.
- Função DateDiff: Retorna a diferença entre duas datas especificadas. Essa diferença pode ser mostrada em anos (yyyy), trimestres (q), meses (m), dias do ano (y), dias (d), semanas (w), semanas do ano (ww), horas (h), minutos (n) e segundos (s).
Saiba que dias do ano e dias, são iguais e semanas e semanas do ano, também são iguais.
Excel VBA 2016
Funções de Textos
- Função Len: Essa função retorna o número de caracteres contidos em uma sequência de textos (uma string).
- Função LCase: Essa função converte a sequência de textos para letras minúsculas.
- Função UCase: Essa função converte a sequência de textos para letras maiúsculas.
- Função Left: Essa função retorna uma quantidade especificada de caracteres à esquerda da sequência de textos especificada.
- Função Right: Essa função retorna uma quantidade especificada de caracteres à direita da sequência de textos especificada.
- Função Mid: Essa função retorna uma quantidade especificada de caracteres a partir de uma posição inicial. - Função String: Essa função repete um determinado caractere uma quantidade de vezes especificada.
Excel VBA 2016
Criando Funções
Funções Definidas pelo Usuário (UDF – User Definition
Function) são como as macros, pois, elas consistem de
declarações e também são chamadas de procedimentos. Porém, uma função é diferente de uma macro, pois, ela retorna um valor. Uma Função Definida do Usuário pode ser usada exatamente como uma função do Excel, isto quer dizer, pode ser usada em suas planilhas eletrônicas e macros para fornecer as respostas que você precisa. Você irá escrever uma Função Definida do Usuário, toda vez que precisar de uma função mais complexa que é usada em células múltiplas e está sujeita a alterações.
Excel VBA 2016
Funções x Macros
Vamos conhecer algumas diferenças entre funções e macros. - Funções começam com a palavra Function e terminam com End Function.
- Funções podem ser usadas em células das planilhas, as macros não.
- Macros podem ser atribuídas a botões e objetos, as funções não.
- Ambas podem chamar outras funções, usar estruturas de controle (If, Laços, etc).
- As Funções retornam um valor quando terminam sua execução, as macros não retornam valores.
- Funções tem uma variável com o mesmo nome da função, o seu valor que é retornado. As macros não.
- Macros podem mudar as propriedades das células e de outros objetos, apagar e adicionar outros objetos. Funções não podem.
- Nomes de Funções e Macros seguem a mesma regra de nomenclatura.
- As funções ficam disponíveis no assistente de funções do Excel, na categoria Definido pelo usuário.
Excel VBA 2016
Analisando a estrutura de código da função da imagem anterior, observamos que toda a sua estrutura foi montada através da estrutura If.
A primeira condição do If, verifica se todos os argumentos são diferentes de vazio, se forem, a função retorna a concatenação do nome, do nome do meio e do sobrenome.
Em seguida, temos um ElseIf para quando o sobrenome não for informado, ser feita a concatenação do nome e do nome do meio.
O próximo ElseIf é usado quando o nome do meio não foi informado é feita a concatenação do nome com o sobrenome. O resultado de Else será exibido quando nenhuma das situações forem satisfatórias.
Excel VBA 2016
UserForms
Usamos os UserForms para criarmos formulários que atuam de uma forma mais amigável para o usuário utilizar os dados de uma ou mais planilhas de uma pasta de trabalho.
Com o uso dos UserForms podemos criar interfaces personalizadas, onde podemos inserir uma série de controles, tais como:
- Caixas de Textos - Caixas de Combinação - Caixas de Listagem
- Grupos de botões de rádio - Grupos de botões de checagem - Botões de Comando
Excel VBA 2016
Esses controles serão encontrados na caixa de ferramentas do VBA.
Saiba que a caixa de ferramentas será visualizada no momento em que estivermos com o objeto formulário (UserForm) sendo exibido no ambiente VBA. Caso a caixa de ferramentas não estiver sendo exibida quando estivermos com um formulário, basta clicarmos no botão (Caixa de Ferramentas) da barra Padrão.
Excel VBA 2016
Inserindo um UserForm
Para inserirmos um userform devemos inicialmente acessar a área de códigos do VBA e depois:
CLIC no menu Inserir CLIC na opção UserForm
Excel VBA 2016
Saiba que é no objeto UserForm onde iremos inserir nossos controles, controles esses que iremos encontrar na caixa de ferramentas.
Saiba também que tanto o UserForm, quanto os controles que iremos inserir, possuem uma série de propriedades que podemos configurar.
Iremos configurar essas propriedades, através da janela
Propriedades que, como nós já sabemos, fica posicionada do
lado esquerdo do editor VBA.
Caso a janela Propriedades não estiver ativa na tela, basta ativarmos através do menu Exibir, opção Janela
Excel VBA 2016
Botões da caixa de ferramentas
Selecionar objetos: Como o próprio nome sugere, serve para selecionar objetos no VBA.
Rótulo: Serve para criar uma legenda na página
Caixa de Texto: As caixas de textos servem para a entrada de dados na planilha.
Caixa de Combinação: Esse controle é usado para exibir uma lista de opções onde o usuário pode escolher um valor da lista ou digitar um valor.
Caixa de Listagem: Esse controle é semelhante ao controle caixa de combinação, porém, mostra os valores em uma listagem, onde o usuário fica limitado aos valores dessa lista, além de poder selecionar múltiplos valores conforme as propriedades do controle.
Caixa de Seleção: Usamos o controle caixa de seleção, para deixar disponível ao usuário à escolha entre valores.
Botão de Opção: Usamos o controle botão de opção quando precisamos que a escolha feita pelo usuário seja de um único valor entre os disponíveis.
Botão de Ativação: Usamos este controle para mostrar se um item está ativado ou não através do uso de botões.
Excel VBA 2016
Quadro: Usamos o controle quadro para criar um grupo de controles funcionais e visuais, ou seja, para separar um grupo de controles de outro grupo.
Botão de Comando: Usamos o controle botão de comando para iniciar, finalizar ou interromper uma ação ou uma série de ações.
TabStrip (Controle Separador): Usamos o controle separador, quando precisamos apresentar subpáginas em uma página, onde queremos reproduzir um mesmo conteúdo em diversas guias, porém, com algumas alterações entre elas.
Multi-Página: Usamos o controle MultiPage de forma semelhante ao controle TabStrip, porém, de forma mais útil, onde ao colocarmos um controle dentro de uma página do MultiPage, este controle não será visualizado nas demais páginas do controle.
Barra de Rolagem: Usamos o controle barra de rolagem, para definir a rolagem vertical ou horizontal de um controle.
Botão de Rotação: Usamos o controle botão de rotação, quando queremos incrementar ou decrementar números.
Imagem: Usamos o controle imagem quando queremos exibir uma imagem no formulário.
Excel VBA 2016
Integração entre Aplicativos
Iremos neste capítulo, conhecer recursos de integração entre os aplicativos do Microsoft Office, a partir do VBA do Excel. Iremos conhecer um pouco da integração do VBA do Excel com o Microsoft Word, com o Microsoft Outlook e com o
Microsoft Access.
Vamos começar integrando nossa aplicação com o Microsoft Word.
Saiba que iremos utilizar está integração para manipular os dados de nossa planilha em um relatório no formato do Microsoft Word.
Para que possamos fazer a integração entre os aplicativos, devemos primeiramente fazer referência às bibliotecas de objetos do aplicativo que iremos fazer a integração.
Usamos essas bibliotecas para que determinados códigos sejam reconhecidos pelo interpretador do VBA.
Caso não façamos referência a uma biblioteca e executarmos um código que faça referência a ela, será retornado um erro em tempo de compilação indicando que o tipo definido pelo usuário não foi definido.
Excel VBA 2016
Fazendo referência ao Microsoft Word
Estando no ambiente de códigos do VBA:
CLIC no menu CLIC na opção
Observe que foi aberta a janela Referências – VBAProject
Localize na janela Referências – VBAProject a opção
Saiba que essa opção habilita a biblioteca do Microsoft Word para ser usada em nosso projeto.
Ative a opção
Excel VBA 2016
Fazendo referência ao Microsoft Graph
Estando no ambiente de códigos do VBA:
CLIC no menu CLIC na opção
Observe que foi aberta a janela Referências – VBAProject
Localize na janela Referências – VBAProject a opção
Saiba que essa opção habilita a biblioteca do Microsoft Word para ser usada em nosso projeto.
Ative a opção
Excel VBA 2016
A estrutura de códigos das duas imagens anteriores contém a codificação para integração entre o Microsoft Excel e o Microsoft Word, vamos analisar essa estrutura:
As quatro primeiras linhas de nossa rotina estão sendo usadas para declaração das variáveis de nossa aplicação, que são: A linha Dim oWordApp As New Word.Application além de
fazer a declaração da variável está sendo usada para ao mesmo tempo inicializa-la, permitindo assim que o objeto possa ser utilizado.
Saiba que a palavra chave New só pode ser usada para declarar variáveis de objetos, não podendo ser usada para declarar outros tipos de dados.
A linha Dim oWordDocumento As Word.Document está
declarando a variável de criação do objeto documento do Word, ou seja, o arquivo em si.
A linha Dim oWordForma As Word.Shape está declarando a
variável de criação do objeto forma do Word, que iremos usar para definirmos a criação do gráfico de nosso relatório.
A linha Dim oGrafico As Graph.Chart está declarando a
variável de criação do objeto gráfico.
Na linha Set oWordDocumento =
oWordApp.Documents.Add estamos instanciando a variável
Excel VBA 2016
novo documento, e que esse documento possa ser editado. A linha oWordApp.Selection.Font.Bold = True está ativando o efeito Negrito.
A linha oWordApp.Selection.TypeText “Prezado Sr. “ &
vbCrlf cria o texto entre aspas no documento através do
comando TypeText do objeto Selection e aplica uma concatenação com a string de quebra de parágrafo (vbCrlf –
Visual Basic Carrier Return and Line Feed ou Visual Basic Retorno de Carro e Alimentação de Linha) ao
documento.
A linha seguinte oWordApp.Selection.Font.Bold = False desativa o efeito Negrito.
A próxima linha escreve mais um texto em nosso documento através do comando TypeText. As diferenças nesta linha são encontradas na concatenação com um valor de célula da planilha, usando como referência o endereço numerado de linha e coluna.
Nas próximas cinco linhas, teremos a criação da tabela no documento do Word. Os valores que serão buscados da planilha do Excel serão passados para o Word em formato de tabelas, e nosso primeiro passo será criar a tabela onde os dados serão armazenados.
A linha oWordDocumento.Content.Tables.Add
Excel VBA 2016
criação da tabela no Word. O item Tables.Add é o responsável pela criação da tabela. O item Selection.Range, 1, 4 define que a tabela terá uma linha e quatro colunas. Saiba que estamos definindo o número de linhas em um somente, porque não sabemos quantas linhas serão copiadas para o Word cada vez que executarmos o comando, portanto, iremos adicionar mais linhas de outra maneira, já o número de colunas será fixo, por isso o definimos com o total de colunas de nossa planilha de exemplo.
As próximas quatro linhas definem a largura (representada em pontos) de cada uma das quatro colunas da tabela que está sendo criada através da propriedade Width, sendo a primeira coluna com 100 pontos e as demais com 80 pontos cada. Saiba que se tivermos mais tabelas em nosso documento, teremos que indicar o número da tabela que estamos trabalhando, por isso, em nossa codificação foi indicado o número (1) ao lado do item Tables.
Esse número é representado pela ordem que a tabela foi inserida no documento, portanto, a primeira tabela que foi inserida é 1 a segunda é 2 e assim sucessivamente.
A linha oWordDocumento.Tables(1).Columns(2).Select, está sendo usada para selecionar a segunda coluna da tabela. A linha oWordApp.Selection.MoveRight wdCharacter, 2,
Excel VBA 2016
duas, exatamente como fazemos quando pressionamos a tecla SHIFT e usamos a tecla da direita para selecionar.
A linha oWordApp.Selection.ParagraphFormat.Alignment
= wdAlignParagraphCenter, está alinhando o conteúdo das
colunas que foram selecionadas anteriormente para o centro. Saiba que quando queremos enviar comandos para a aplicação ou simular uma ação, como por exemplo, um conjunto de teclas, enviamos a ação para o objeto Application, porém, quando queremos modificar ou inserir objetos diretamente no documento, usamos o objeto Document.
Deste modo, sempre que formos trabalhar com seleções, iremos usar o objeto Application como referência.
A linha For i = 1 To 13 inicia o laço For que percorrerá as
linhas de nossa planilha e que será utilizado para a inserção dos objetos entre nossa planilha e a tabela do documento que estamos criando.
A linha With oWordDocumento.Content.Tables(1), será utilizada para iniciar a estrutura With que irá definir o conteúdo da tabela e suas formatações. Estamos usando a estrutura With para facilitar a inserção das linhas de comandos dentro de nosso código, usando o conjunto de formatações e conteúdo todo dentro dessa única estrutura.
A linha For j = 1 To 4 inicia o laço For que irá percorrer as