• Nenhum resultado encontrado

Copyright 1998 by TREINASOFT BRASIL LTDA. Rua Doutor Diogo de Faria, 123 (Vila Clementino) Tel.: (11) CEP: São Paulo - SP

N/A
N/A
Protected

Academic year: 2021

Share "Copyright 1998 by TREINASOFT BRASIL LTDA. Rua Doutor Diogo de Faria, 123 (Vila Clementino) Tel.: (11) CEP: São Paulo - SP"

Copied!
99
0
0

Texto

(1)

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.

(2)

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

(3)

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

(4)

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.

(5)

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:

(6)

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.

(7)

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.

(8)

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.

(9)

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

(10)

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.

(11)

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.

(12)

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.

(13)

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.

(14)

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.

(15)

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

(16)

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 .

(17)

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.

(18)

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

(19)

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.

(20)

Excel VBA 2016

Analisando o código

Observe a imagem abaixo:

(21)

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.

(22)

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.

(23)

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.

(24)

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.

(25)

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.

(26)

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.

(27)

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.

(28)

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.

(29)

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.

(30)

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

(31)

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.

(32)

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.

(33)

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.

(34)

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)

(35)

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.

(36)

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.

(37)

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é

(38)

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.

(39)

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

(40)

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

(41)

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).

(42)

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.

(43)

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.

(44)

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.

(45)

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.

(46)

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

(47)

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...

(48)

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

(49)

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.

(50)

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

(51)

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.

(52)

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.

(53)

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.

(54)

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.

(55)

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.

(56)

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:

(57)

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.

(58)

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.

(59)

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.

(60)

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.

(61)

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.

(62)

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.

(63)

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.

(64)

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.

(65)

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.

(66)

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.

(67)

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.

(68)

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.

(69)

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.

(70)

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

(71)

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.

(72)

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

(73)

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

(74)

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.

(75)

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.

(76)

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.

(77)

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

(78)

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

(79)
(80)
(81)

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

(82)

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

(83)

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,

(84)

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

Referências

Documentos relacionados

O termo extrusão do núcleo pulposo aguda e não compressiva (Enpanc) é usado aqui, pois descreve as principais características da doença e ajuda a

Considera-se que a interdisciplinaridade contribui para uma visão mais ampla do fenômeno a ser pesquisado. Esse diálogo entre diferentes áreas do conhecimento sobre

Rua Diogo de Quadros, 73 - Chácara Santo Antônio - CEP 04710-010 - São Paulo/SP Carga horária: 8h. Número de

O presente estudo, que advém da obser- vação das diferenças nas taxas de enraiza- mento entre as cultivares ‘Cobrançosa’ e ‘Galega vulgar’, procura diferenças tanto na

E por isso é que eu entendo que a acrasia não é irracionalidade, não é fraqueza de vontade; acho que é um momento de uma racionalidade inconscientizada pela emoção que advém

Quando a(o) CONTRATANTE ou seu responsável não fizer declara- ções verdadeiras, omitindo informações em prejuízo da PRODENT; 3. Decretação de falência, deferimento de

A análise matemática do circuito retificador apresentado permitiu a obtenção de um conjunto de equações que descrevem o funcionamento do circuito em todas as etapas de seu

A Procuradoria-Geral de Justiça do Ministério Público do Estado de Minas Gerais, por meio do Centro de Estudos e Aperfeiçoamento Funcional (CEAF), no uso das