Apostila VBA

 

Embed or link this publication

Description

Apostila VBA

Popular Pages


p. 1

virtual inf or m Át i ca vista

[close]

p. 2

virtual inf or m Át i ca vista introdução a linguagem vba visual basic for applications 3 onde podemos utilizar o vba 3 como resposta a um evento 3 criação de funções e procedimentos em módulos separados 3 aprendendo vba 4 os comandos do vba são divididos basicamente em três tipos 4 o ambiente de programação 6 para criar o formulário teste faça o seguinte 7 anatomia dos módulos do vba 13 principais comandos do vba 15 tipos de dados 15 declaração e tipo de variável 15 fazendo cálculos e comparações com o vbscript ­ operadores 18 fazendo cálculos com os operadores aritméticos 18 comparando valores com os operadores de comparação 22 o escopo das variáveis no vba 26 estruturas para controle de fluxo em vbscript 29 funções procedimentos e eventos com vbscript 41 introdução 41 tipos de dados e funções para conversão de tipos 41 determinando o tipo de dados contido em uma variável 41 funções para conversão de tipos 50 outras funções do vbscript ­ tratamento de string datas e funções matemáticas 56 funções para tratamento de string 56 função len 56 função lcase 57 função ucase 57 função left 57 função right 58 função mid 58 função string 59 funções para tratamento de data e hora 60 função date 60 função time 60 função day 61 função month 61 função now 61 função monthname 62 função hour 62 a função datediff 63 a função dateadd 64 função year 65 funções para cálculos matemáticos 67 criando suas próprias funções e procedimentos 68 criando e utilizando sub-rotinas 69 criando e utilizando funções 71 cálculo do dígito verificador cpf cnpj e processos 74 como calcular o dv do cpf 74 juntando tudo 76

[close]

p. 3

virtual inf or m Át i ca vista introdução a linguagem vba visual basic for applications o vba é derivado do visual basic o visual basic é um ambiente de desenvolvimento completo onde podemos criar programas para o ambiente windows um programa comercial para controlar estoque de mercadorias pode ser criado utilizando-se o visual basic um aplicativo como ofolhadepagamento também poderia ser criado utilizando o visual basic já o vba é uma linguagem bastante poderosa embora não seja tão poderosa quanto o visual basic para criação de aplicativos e automação de tarefas baseados nos aplicativos do microsoft office access word excel,power point e outlook onde podemos utilizar o vba existem basicamente duas situações/locais diferentes onde podemos utilizar o vba como resposta a um evento conforme descrito anteriormente o modelo deprogramação do ambiente windows é baseado em eventos um evento é uma ação do usuário ao utilizar o teclado ou o mouse.por exemplo quando o usuário clica em um botão de comando é gerado o evento ao clicar associado com este botão quando o usuário altera o valorem um campo de dados e pressiona a tecla tab para ir para o próximo campo são gerados dois eventos associados com o campo que foi atualizado após atualizar e ao perder o foco quando o usuário dá um clique duplo em um determinado elemento é disparado o evento ao clicar duas vezes e assim por diante por padrão nenhuma ação é programada para responder aos eventos que são disparados conforme já vimos anteriormente é possível criar macros que serão executadas em resposta a um determinado evento podemos utilizar o vba para criar um procedimento um procedimento é formado por um ou mais comandos que será executado em resposta ao evento por exemplo podemos criar um procedimento para validar um número de cpf calcular o dv do cpf este procedimento pode ser configurado para ser executado em resposta ao evento após atualizar do campo cpf.o código criado para ser executado em resposta a um evento é gravada juntamente com o formulário ou relatório onde está o elemento que dispara o evento criação de funções e procedimentos em módulos separados se quisermos criar procedimentos ou funções que não estejam ligados um evento específico em um formulário ou relatório podendo porém serem chamados em diversos eventos diferentes conforme aprenderemos mais adiante podemos criar funções

[close]

p. 4

virtual inf or m Át i ca vista gravadas em módulos do access um módulo é um objeto do access cuja única finalidade é armazenar código de procedimentos e funções do vba quando um procedimento ou função é definido e armazenado em um módulo podemos usá-lo em qualquer expressão como se fosse uma função interna do microsoft access nos criaremos mais adiante a título de exemplo uma função chamada mêsporextenso esta função receberá um valor numérico entre 1 e 12 e irá retornar o nome do mês correspondente por extenso agora que já falei bastante e fiz uma boa propaganda das vantagens em se utilizar o vba é hora de aprendermos os fundamentos básicos desta linguagem de programação aprendendo vba um procedimento função ou módulo do vba é uma seqüência de comandos que são executados para a realização de uma ou mais tarefas por exemplo posso escrever um grupo de comandos que acessa os dados da tabela pedidos e aumenta o valor de um determinado campo de acordo com determinadas condições observe o comando a seguir me númerodopedido setfocus este é um comando que simplesmente coloca o cursor no campo númerodopedido,no formulário atual não se preocupe em entender este comando agora todo comando em vba deve seguir algumas regras de sintaxe a sintaxe tem a ver com a maneira como o comando é escrito por exemplo se você for utilizar a função day em um comando e ao invés de day utilizar dai você terá cometido um erro de sintaxe e o comando não poderá ser executado os erros de sintaxe são os mais fáceis de serem identificados e corrigidos os comandos do vba são divididos basicamente em três tipos comandos básicos do vba:são aqueles comandos que estão presentes em toda e qualquer lingüagem que se preze são comandos para declaração de variáveis operadores aritméticos e lógicos struturas de controle e operadores para a realização de testes condicionais por exemplo qual a linguagem que não possui uma funçãoif para a realização de testes condicionais funções internas do microsoft access:existem centenas de funções prontas fornecidas pelo microsoft access e que podem ser utilizadas em qualquer comando do vba por exemplo,para armazenar mas em uma variável x o valor numérico do ano da data do sistema poderíamos utilizar o seguinte comando x =yeardate durante a primeira semana utilizamos uma série destas funções tais como esquerda direita meio ano dia mês etc importante ao utilizar funções em comandos do vba devemos,sempre,utilizar a função em inglês.por exemplo ao invés de ano devemos utilizar year ao invés de mês devemos utilizar month e assim por diante.

[close]

p. 5

virtual inf or m Át i ca vista objetos da hierarquia de objetos do microsoft office um objeto é uma entidade que possui propriedades que descrevem as características do objeto e métodos que descrevem os comportamentos do objeto cada aplicativo do microsoft office disponibiliza uma hierarquia de objetos bem definida estes objetos podem ser acessados através de programação podemos utilizar os métodos dos objetos para realizar determinadas ações sobre o objeto e suas propriedades para obter informações sobre suas características esta hierarquia de objetos é que torna o vba tão poderoso É graças a hierarquia de objetos do office que de dentro de um banco de dados do access por exemplo podemos acessar dados de uma planilha do excel gravada em um drive de rede e combinar tais dados com dados obtidos a partir de um banco de dados por exemplo do dbase dbf gravado na máquina local falaremos mais sobre objetos adiante agora apenas a título de exemplo alguns comandos do vba que utilizam um objeto do tipo recordset para descobrir o número de registros da tabela pedidos dim db as dao.database dim rs as dao.recordset dim numreg as integer set db currentdb set rs db.openrecordset pedidos numreg rs.recordcount msgbox nÚmero de registros da tabela pedidos numreg quando o microsoft access executa estes comandos é emitida a seguinte mensagem importante não se preocupe em entender os comandos utilizados no exemplo anterior vamos estudar em detalhes uma série de objetos inclusive os objetos database e recordset utilizados no exemplo anterior.

[close]

p. 6

virtual inf or m Át i ca vista o ambiente de programação o microsoft access fornece um ambiente de programação bastante poderoso com uma série de recursos que facilitam a criação de código vba neste tópico vamos aprender a utilizar os aspectos básicos do ambiente de programação do vba se não tivéssemos disponível um ambiente de programação teríamos que lembrar da sintaxe de todos os comandos dos métodos e propriedades dos objetos convenhamos que isso é praticamente impossível pois com o vba temos acesso a milhares de objetos é isso mesmo milhares de objetos cada objeto pode ter dezenas de propriedades métodos e coleções o ambiente de desenvolvimento fornece uma série de facilidades enquanto estamos criando nosso código vba por exemplo ao digitar o nome de um objeto e um ponto será aberta automaticamente uma lista com todos os métodos e propriedades deste objeto ao invés de lembrar do nome dos métodos/propriedades basta selecioná-los em uma lista se selecionarmos um método ao digitarmos o parênteses de abertura será exibida uma lista com os argumentos esperados pelo método bem como o tipo texto número data etc de cada argumento se digitarmos um comando incorretamente o ambiente de desenvolvimento emite uma mensagem e coloca em destaque o comando que foi digitado errado estas são apenas algumas das facilidades fornecidas pelo ambiente de desenvolvimento do vba para conhecermos melhor o referido ambiente vamos a um exemplo prático vamos abrir o banco de dados nwind.mdb que está na pasta semana2 vamos fazer o logon como usuário admcaxias e senha abc12345 criaremos um novo formulário chamado teste formulário este que não será baseado em nenhuma tabela/consulta ou seja um formulário em branco vamos adicionar um botão de comando quando for aberto o assistente de comando vamos clicar no botão cancelar criaremos manualmente código vba associado ao evento ao clicar do botão de comando ao criar o código veremos os principais elementos/vantagens do ambiente de desenvolvimento utilizaremos o seguinte código dim db as dao.database dim rs as dao.recordset dim numreg as integer set db currentdb set rs db.openrecordset pedidos numreg rs.recordcount msgbox nÚmero de registros da tabela pedidos numreg importante não se preocupe em entender os comandos utilizados no exemplo anterior vamos estudar em detalhes uma série de objetos inclusive os objetos database e recordset utilizados no exemplo anterior.

[close]

p. 7

virtual inf or m Át i ca vista para criar o formulário teste faça o seguinte execute abra o microsoft access abra o banco de dados nwind.mdb que está na semana2 faça o logon como usuário admcaxias e senha abc12345 no painel da esquerda clique em formulários dê um clique no botão novo na janela novo formulário dê um clique na opção modo estrutura certifique-se de que a lista de tabelas/colunas esteja em branco e dê um clique no botão ok conforme indicado na figura a seguir será aberto um formulário em branco localize a caixa de ferramentas e adicione um controle do tipo botão de comando para maiores informações sobre os controles de formulário inclusive o controle botão de comando consulte os exercícios da primeira seman será aberto o assistente de botão de comando dê um clique no botão cancelar para fechar o assistente abra as propriedades do botão de comando e altere o seu nome para botaoex ainda com as propriedades abertas dê um clique na guia evento clique no evento ao clicar dê um clique no botão que aparece ao lado do evento ao abrir na lista de opções que é exibida selecione construtor de código conforme indicado na figura a seguir:

[close]

p. 8

virtual inf or m Át i ca vista dê um clique no botão ok será aberto o ambiente de desenvolvimento do vba conforme indicado na figura a seguir:

[close]

p. 9

virtual inf or m Át i ca vista para cada evento é criado um procedimento separado um procedimento é um pedaço de código que é executado em resposta ao evento o nome dos procedimentos associados a eventos segue um padrão bem definido o padrão é o nome do controle no nosso caso é botaoex seguido de um sinal de sublinhado e o nome interno do evento para o access o evento ao clicar é reconhecido como click por isso associado ao evento ao clicar do controle botaoex temos o seguinte procedimento private sub botaoex_click end sub a palavra private significa que o procedimento é privado ou seja somente pode ser acessado de dentro do formulário teste por exemplo não teríamos como chamar este procedimento lá no formulário pedios ou clientes o nome do procedimento é como se fosse uma função por isso o abre e fecha parênteses após o nome o procedimento poderia receber um ou mais parâmetros de entrada e retornar um ou mais parâmetros de saída aprenderemos a trabalhar com parâmetros mais adiante o final do procedimento é indicado pelo comando end sub o nosso código de exemplo deve ser digitado dentro dos limites do procedimento entre as linhas private e end sub importantÍssimo antes de comeÇarmos a digitar o cÓdigo proposto vamos abrir um pequeno parÊnteses para falar sobre referÊncias referÊncias conforme descrito anteriormente com o vba temos acesso a milhares de objetos por exemplo de dentro de um formulário podemos exibir dados gravados em uma planilha do excel ou em um arquivo do dbase iii para acessarmos de dentro do access dados de uma planilha do excel precisamos usar os objetos adequados os diversos objetos disponíveis são disponibilizados através de bibliotecas de objetos por exemplo todos os objetos para acesso ao excel estão agrupados em um biblioteca de objetos todos os objetos para acesso a dados do próprio access estão agrupados em uma outra biblioteca de objetos e assim por diante existem dezenas de bibliotecas cada uma com centenas de objetos para que possamos utilizar no código vba objetos de uma determinada biblioteca precisamos antes fazer uma referÊncia a biblioteca correspondente ao fazer uma referÊncia a uma biblioteca passamos a ter acesso a todos os objetos da biblioteca você pode perguntar então porque não é feita referência automaticamente a todas as bibliotecas disponíveis?

[close]

p. 10

virtual inf or m Át i ca vista isto não é feito pois cada referência causa um gasto adicional de memória se fizéssemos referência a todas as bibliotecas disponíveis teríamos sérios problemas de desempenho para o nosso exemplo temos que fazer referência a biblioteca dao data access objetct essa biblioteca contém uma série de objetos para acesso a dados utilizaremos intensamente esta biblioteca durante a terceira semana de treinamento para fazer referência a um biblioteca utilizamos o comando ferramentas referências surge uma janela com todas as bibliotecas disponíveis localize a biblioteca microsoft dao x.x object library onde para x.x selecione a versão de maior número que você encontrar na listagem conforme indicado na figura a seguir nota pode ser que a versão da biblioteca dao instalada no seu computador seja diferente selecione a versão disponível dê um clique no botão ok e pronto você terá feito referência a biblioteca dao necessária ao nosso exemplo fizemos referência a esta biblioteca pois os objetos database e recordset que utilizaremos fazem parte desta biblioteca aprenderemos a utilizar estes objetos em maiores detalhes durante a terceira semana do treinamento aqui fechamos o nosso pequeno parênteses sobre referÊncias.

[close]

p. 11

virtual inf or m Át i ca vista vamos começar a digitar o código do nosso exemplo para que possamos observar mais algumas funcionalidades do ambiente de desenvolvimento abaixo da linha private digite o seguinte dim db as dao.database observe que após digitar a palavra as e pressionar a barra de espaços é aberta uma listagem com todas as opções disponíveis você digita d e a listagem é posicionada no primeiro elemento que começa com a letra d selecione dao conforme indicado na figura a seguir após selecionar dao digite um ponto observe que novamente é aberta uma listagem com todos os objetos disponíveis na biblioteca dao na lista de objetos selecione database conforme indicado na próxima figura É importante salientar que não pode haver espaço entre o ponto e o nome do objeto essa é uma regra geral não existe espaço entre dois nomes separados por ponto ou por ponto de exclamação

[close]

p. 12

virtual inf or m Át i ca vista esta sem dúvida é uma das maiores vantagens do ambiente de desenvolvimento ao digitar o nome do objeto e um ponto automaticamente é exibida uma lista dos métodos/propriedades disponíveis essa facilidade é importantíssima pois evita que tenhamos que decorar o nome dos métodos/propriedades que mais utilizamos digite o restante do código indicado a seguir dim rs as dao.recordset dim numreg as integer set db currentdb set rs db.openrecordset pedidos numreg rs.recordcount msgbox nÚmero de registros da tabela pedidos numreg observe que a medida que você vai digitando o nome dos objetos as listas com o nome das propriedades/métodos vão sendo exibidas o ambiente de desenvolvimento também oferece uma série de menus e botões de comando a medida que formos utilizando estes comandos iremos explicando cada um deles agora vamos salvar o procedimento botaoex_click dê um clique no botão salvar botão com a figura do disquete será aberta uma janela pedindo o nome do formulário digite teste e dê um clique no botão ok conforme indicado na próxima figura:

[close]

p. 13

virtual inf or m Át i ca vista clique no botão x de cima para fechar o ambiente de desenvolvimento você estará de volta ao modo estrutura do formulário teste agora vamos testar o código recém criado altere a legenda do botão para exemplo de vba vá para o modo formulário dê um clique no botão exemplo de vba será exibida a mensagem indicada na figura a seguir dê um clique no botão ok para fechar essa mensagem feche o formulário teste feche o microsoft access nesse tópico abordamos os aspectos básicos do ambiente de desenvolvimento no restante deste treinamento utilizaremos em diversos momentos o ambiente de desenvolvimento a medida que formos utilizando este ambiente aprenderemos sobre as demais funcionalidades do ambiente anatomia dos módulos do vba o código vba é escrito em unidades chamadas subrotinas ou funções que são armazenadas em módulos os módulos do microsoft access podem ser de dois tipos módulos padrão standard modules módulos de classes class modules módulos padrão são criados a partir da opção módulos do banco de dados os procedimentos e funções criados neste tipo de módulo podem ser utilizados a partir de outros módulos em formulários e relatórios por exemplo posso criar um módulo padrão chamado funções de validação neste módulo crio uma função para validação do cpf outra para validação do cnpj e uma terceira para validação do número de processos a partir de qualquer formulário ou relatório posso chamar as funções contidas no módulo funções de validação esta é uma maneira de reaproveitar as funções que criamos ou seja criamos uma única vez e utilizamos nos vários locais onde a função for necessária módulos de classe podem ser criados como módulos padrão ou podem ser associados a um formulário ou relatório ao criarmos código associado com um evento em um formulário ou relatório o microsoft access automaticamente cria um módulo associado com o formulário/relatório anatomia de um módulo vba um módulo vba é formado por uma seção de declarações e uma série de funções/procedimentos a diferença básica entre função e procedimento é que a função retorna um ou mais valores e o procedimento

[close]

p. 14

virtual inf or m Át i ca vista simplesmente executa uma série de comandos sem retornar valores na seção de declarações podemos declarar variáveis e outros comandos especiais que terão efeito sobre todos os componentes do módulo quando criamos um módulo associado a um formulário temos uma série de procedimentos cada vez que criamos código em resposta a um evento é criado um novo procedimento no modo associado ao formulário na próxima página temos um exemplo de uma estrutura genérica de um módulo anatomia de um mÓdulo do vba seção de declarações as opções/variáveis desta seção são acessíveis em qualquer parte do módulo option compare database option explicit início do procedimento 1 sub1 private sub sub1 comando1 do sub1 comando2 do sub1 comandon do sub1 end sub final do procedimento 1 sub1 início do procedimento 2 sub2 rivate sub sub2 comando1 do sub2 comando2 do sub2 comandon do sub2 end sub final do procedimento 2 sub2 início do procedimento n subn private sub subn comando1 do subn comando2 do subn comandon do subn end sub final do procedimento n subn obs as linhas que iniciam com um apóstrofe são linhas de comentário isto é não serão executadas pelo microsoft access o uso de comentários é uma forma de

[close]

p. 15

virtual inf or m Át i ca vista fazer a documentação do código vba o que facilita a compreensão e manutenção de nossas rotinas agora chegou o momento de estudarmos os principais comandos do vba principais comandos do vba tipos de dados declaração e tipo de variável uma variável é um espaço na memória do computador reservado para armazenar um ou mais valores fazemos referência a este espaço utilizando nomes como o valor armazenado pode variar a medida que o código vba é executado estas estruturas são chamadas de variáveis no vba não é obrigatório a declaração de variáveis porém é recomendável que declaremos todas as variáveis de tal forma que o código fique mais claro e de fácil compreensão para declararmos uma variável utilizamos o comando dim conforem exemplificado abaixo dim x dim nome dim teste neste caso estamos apenas declarando o nome da variável sem declarar de que tipo texto,inteiro data etc é a variável uma variável declarada sem tipo é considerada do tipo variant o que na prática significa que a variável pode conter qualquer tipo de valor pode parecer uma prática interessante a não declaração do tipo da variável porém isso é altamente desaconselhável se não declararmos o tipo conforme descrito anteriormente a variável poderá conter qualquer valor neste caso o que impede de um campo numérico conter valores de texto ou vice-versa nota para exemplificar os diversos comandos básicos da linguagem vba vamos utilizar o formulário teste para cada comando que será exemplificado criaremos um novo botão de comando e atribuiremos ao evento ao clicar do botão o código do exemplo para facilitar o estudo nomearemos o botão com um nome relacionado com o exemplo que este representa por exemplo ao criarmos o botão para exemplificar o uso de operadores aritméticos chamaremos este botão de exoperaritméticos para maiores informações sobre como criar código associado ao evento ao clicar de um botão consulte o exemplo anterior para criar o formulário teste faça o seguinte o formato geral para o comando dim é dim nome_da_variável as tipo_da_variável também podemos declarar mais do que uma variável com um único comando dim para isto basta separar as variáveis com vírgula conforme exemplificado abaixo:

[close]

Comments

no comments yet

YOUBLISHER
About
What Others Say
Sitemap
Impressum

PUBLISHERS
Login
Signup
Tutorials
FAQ
Support

BUSINESS
Overview
Advertising
Support

DEVELOPERS
API

LEGAL
Report a Copyright Violation
Copyright FAQ
Terms of Use
Privacy Policy