Buscar

Excel 2013 VBA - Modulo II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 120 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 120 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 120 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

COD.: TE 1625/1_WEB
Excel VBA - Módulo II
Excel VBA - Módulo II
Créditos
Excel VBA - Módulo II
Copyright © TechnoEdition Editora Ltda.
Todos os direitos autorais reservados. Este manual não pode ser copiado, 
fotocopiado, reproduzido, traduzido ou convertido em qualquer forma eletrônica, 
ou legível por qualquer meio, em parte ou no todo, sem a aprovação prévia, por 
escrito, da TechnoEdition Editora Ltda., estando o contrafator sujeito a responder 
por crime de Violação de Direito Autoral, conforme o art.184 do Código Penal 
Brasileiro, além de responder por Perdas e Danos. Todos os logotipos e marcas 
utilizados neste material pertencem às suas respectivas empresas.
“As marcas registradas e os nomes comerciais citados nesta obra, mesmo que não sejam assim 
identificados, pertencem aos seus respectivos proprietários nos termos das leis, convenções e 
diretrizes nacionais e internacionais.”
Coordenação Geral
Marcia M. Rosa
Coordenação Editorial
Henrique Thomaz Bruscagin
Supervisão Editorial
Simone Rocha Araújo Pereira
Este material constitui uma nova obra e é uma derivação da seguinte obra original, 
produzida por TechnoEdition Editora Ltda. em Mai/2011: Excel 2010 VBA – Módulo II
Autoria: Hildebrando Rodrigues da Mota
Atualização
Beatriz Silva Ramos
Diagramação
Bruno de Oliveira Santos
Edição nº 1 | Cód.: 1625/1_WEB
outubro/ 2013
Sumário
Informações sobre o curso ..................................................................................................... 07
Capítulo 1 - A linguagem SQL ................................................................................................ 09
1.1. Introdução ...........................................................................................10
1.2. Visão Geral da Linguagem SQL ..............................................................11
1.3. Conceitos do SQL ..................................................................................12
1.3.1. Tabela ...................................................................................................12
1.3.2. Campo ..................................................................................................13
1.3.3. Registro ................................................................................................13
1.3.4. Banco de dados .....................................................................................14
1.3.5. Base de Dados ......................................................................................15
1.3.6. Sistema de gerenciamento de banco de dados ......................................15
Pontos principais ........................................................................................................................ 16
Teste seus conhecimentos...................................................................................................... 17
Capítulo 2 - Consultas SQL ..................................................................................................... 23
2.1. Introdução ............................................................................................24
2.2. O que é uma consulta SQL ....................................................................24
2.3. A cláusula SELECT .................................................................................24
2.4. A cláusula FROM ...................................................................................25
2.5. A cláusula WHERE ..................................................................................26
2.5.1. Trabalhando com critérios ....................................................................27
2.5.2. Operadores na cláusula WHERE .............................................................28
2.5.2.1. Operador BETWEEN ...............................................................................29
2.5.2.2. Operador LIKE e os curingas .................................................................29
2.5.2.3. Operador IN ..........................................................................................30
2.6. A cláusula ORDER BY .............................................................................30
2.6.1. A palavra-chave DESC ............................................................................31
2.6.2. A instrução TOP ....................................................................................32
Pontos principais ........................................................................................................................ 34
Teste seus conhecimentos...................................................................................................... 35
Capítulo 3 - DAO – Data Access Object ............................................................................. 39
3.1. Introdução ............................................................................................40
3.2. Modelo de objetos DAO ........................................................................41
3.3. Importando dados de uma base Access .................................................43
3.3.1. Configurações iniciais ...........................................................................43
3.3.2. Construindo o código VBA ....................................................................45
Pontos principais ........................................................................................................................ 52
Mãos à obra! .................................................................................................................................. 53
6
Excel VBA - Módulo II
Capítulo 4 - ADO - ActiveX Data Objects .......................................................................... 55
4.1. Introdução ............................................................................................56
4.2. O objeto Connection ADO .....................................................................56
4.2.1. Especificando um provedor OLE DB e uma string de conexão ................56
4.3. Importando dados de uma base Access .................................................58
4.3.1. Configurações iniciais ...........................................................................58
4.3.2. Código VBA – String de conexão ...........................................................60
4.3.2.1. Código VBA – Objeto Recordset .............................................................61
Pontos principais ........................................................................................................................ 67
Mãos à obra! .................................................................................................................................. 69
Capítulo 5 - Importando dados de um arquivo TXT .................................................... 71
5.1. Introdução ...........................................................................................72
5.2. Preparando o ambiente .........................................................................72
5.3. Construindo a rotina .............................................................................73
5.4. Atribuindo a rotina a um controle de formulário ...................................77
Pontos principais ........................................................................................................................ 80
Mãos à obra! .................................................................................................................................. 81
Capítulo 6 - Importando dados de um arquivo XLS ..................................................... 83
6.1. Introdução ...........................................................................................84
6.2. Preparando o ambiente .........................................................................84
6.3. Construindo a Rotina ............................................................................86
Pontos principais ........................................................................................................................89
Mãos à obra! .................................................................................................................................. 91
Capítulo 7 - Inserindo gráficos em formulários ............................................................ 93
7.1. Introdução ...........................................................................................94
7.2. Preparando o gráfico .............................................................................94
7.3. O formulário de controle .......................................................................95
7.4. O formulário Gráfico .............................................................................99
Pontos principais ........................................................................................................................ 104
Mãos à obra! .................................................................................................................................. 105
Capítulo 8 - Criando e manipulando classes .................................................................. 107
8.1. Programação orientada a objeto ............................................................108
8.2. Conceito de classe de objetos ...............................................................109
8.2.1. Classe ...................................................................................................109
8.2.2. Objeto ..................................................................................................110
8.2.3. Coleções ...............................................................................................111
8.2.4. Parent e Child .......................................................................................111
8.2.5. Propriedades, métodos e eventos ..........................................................112
8.3. Criando uma propriedade .....................................................................112
Pontos principais ........................................................................................................................ 116
Mãos à obra! .................................................................................................................................. 117
Informações sobre o curso
Excel VBA - Módulo II
7
Informações sobre o curso
Para que os alunos possam obter um bom aproveitamento deste 
curso de Excel VBA - Módulo II, é imprescindível que eles tenham 
participado do nosso curso de Excel VBA - Módulo I, ou possuam 
conhecimentos equivalentes.
1
 9 Visão geral da linguagem SQL;
 9 Conceitos do SQL.
A linguagem SQL
10
Excel VBA - Módulo II
1. A linguagem SQL 1.1. Introdução 
Ao criar um projeto em Excel + VBA, podem surgir necessidades específicas em 
que o uso de banco de dados é funcional; por exemplo, quando devem existir 
tabelas e, dada a quantidade de dados, devem ser realizadas consultas nelas. 
Mas, e agora, será que vamos precisar usar outro software? Não necessariamente, 
pois esse procedimento pode ser feito dentro do VBA, especificamente por meio 
da linguagem SQL, que será a grande responsável por fazer esse “trabalho” para 
nós. Antes de tudo, vamos entender como funciona a linguagem SQL.
SQL significa Linguagem Estruturada de Consulta ou, em inglês, Structured 
Query Language e sua finalidade, como o próprio nome sugere, é facilitar o 
acesso a informações (por meio de consultas, atualizações e manipulações de 
dados) armazenadas em bancos de dados do tipo relacional.
Bancos de dados relacionais são aqueles que armazenam os dados e informações 
em tabelas, as quais são formadas por linhas e colunas. As colunas representam 
os campos da tabela, como Nome, Endereço, Telefone, etc. As linhas representam 
os registros, que são os dados de uma tabela, por exemplo, Simone Alves, Rua 
Patriota 35, 5454-5454.
A linguagem de consulta estruturada SQL teve sua origem nos laboratórios 
da IBM, em meados da década de 70, com a linguagem SEQUEL, desenvolvida 
por Donald Chamberlin e sua equipe. Essa linguagem evoluiu até o mês de 
novembro de 1976, no qual a IBM apresentou oficialmente a linguagem SQL. 
Na época de seu desenvolvimento, a IBM era considerada a maior empresa de 
computadores e, devido ao seu peso no mercado, a linguagem SQL tornou-se 
padrão mundial. 
Porém, a grande aceitação dessa linguagem pelo mercado gerou um problema: 
cada empresa passou a incorporar comandos próprios à linguagem SQL, 
tornando-a despadronizada em relação à sua forma original. 
Para solucionar este problema, em 1982, o instituto ANSI (American National 
Standards Institute), por intermédio do Comitê para Banco de Dados X3H2, 
passou a estabelecer normas e critérios técnicos para definir os padrões para 
a linguagem de consulta SQL, denominada, então, ANSI/SQL. Concluídos os 
trabalhos de padronização em 1986, criou-se o padrão oficial para linguagem 
de consulta estruturada SQL, denominada SQL/86 em alusão ao ano de sua 
padronização.
11
A linguagem SQL 1
No ano seguinte, o instituto ANSI, juntamente com a organização ISO 
(Internacional Standards Organizations), trabalhou para determinar uma 
extensão ao padrão da linguagem dessa consulta, gerando um segundo padrão 
denominado SQL/89 (em referência ao ano de conclusão).
Os comitês ISO e ANSI continuaram seus trabalhos para determinar novas 
expansões, agregando as informações passadas pelo mercado. Assim, em 1992, 
apresentaram um novo padrão denominado SQL2 (SQL/92), sendo o terceiro 
padrão para a linguagem de consulta estruturada SQL. Por fim, em 1999, surge 
oficialmente o quarto padrão da linguagem SQL, denominado SQL3 ou SQL/99.
1.2. Visão Geral da Linguagem SQL
A linguagem SQL é composta por dois grupos de instruções para gerenciar os 
processos de administração e controle de bancos de dados. São elas: DDL e 
DML.
A DDL (Data Definition Language ou Linguagem de Definição de Dados) engloba 
as instruções que permitem efetuar a criação das estruturas de tabelas, de índices 
e de bancos de dados em geral, além de possibilitar alterações nas estruturas 
criadas e a remoção das estruturas existentes. Nesse grupo, encontramos as 
instruções CREATE TABLE, DROP TABLE, ALTER TABLE, CREATE INDEX e 
DROP INDEX.
As instruções tipo DML (Data Manipulation Language ou Linguagem de 
Manipulação de Dados) possibilitam executar a manipulação dos dados que 
estejam armazenados nas tabelas de um determinado banco de dados. Sendo 
assim, é possível cadastrar, alterar e excluir registros existentes. Nesse grupo 
encontram-se as instruções INSERT, SELECT, UPDATE e DELETE.
Os comandos DML são acompanhados de uma gama de cláusulas que os tornam 
muito flexíveis. São elas: FROM, WHERE, GROUP BY, HAVING e ORDER BY, as 
quais possibilitam efetuar a aplicação de condições que alteram a forma de 
funcionamento das consultas.
Não são muitos os comandos existentes na linguagem SQL. Porém, entre eles, o 
SELECT é o mais importante e o que mais vezes será citado neste treinamento, 
pois é com ele que se obtém a extração de registros de bases de dados.
12
Excel VBA - Módulo II
Neste treinamento, abordaremos apenas as instruções do tipo DML, pois nosso 
foco é a consulta e extração de registros de bases de dados e não a criação, 
edição ou exclusão de tabelas, realizadas por meio das instruções DDL.
1.3. Conceitos do SQL
Para que se possa assimilar adequadamente o funcionamento da linguagem 
SQL, é de suma importância entender os conceitos que norteiam a utilização 
de ferramentas baseadas em sistemas de gerenciamento de bancos de dados 
relacionais. Entre tais conceitos, é fundamental saber o que é campo, registro, 
tabela, banco de dados, base de dados e sistema de gerenciamento de banco 
de dados. Tais conceitos são descritos nos subtópicos adiante. 
1.3.1. Tabela
Denomina-se tabela o conjunto de dados organizados em linhas e colunas. Nas 
tabelas de bancos de dados, as colunas são denominadas Campos e as linhas 
são denominadas Registros.
A seguinte imagem ilustraum exemplo de tabela:
Tabela
13
A linguagem SQL 1
1.3.2. Campo
Campo está relacionado à menor unidade de informação a ser armazenada 
em uma tabela (ou arquivo). Um campo pode armazenar apenas um tipo de 
informação que esteja baseado em um único tipo de dado. Cada campo possui 
um nome de identificação, a especificação de um tipo de dado, o tamanho de 
armazenamento, entre outras informações que sejam necessárias.
A seguir, a imagem ilustra os campos contidos em uma tabela:
1.3.3. Registro
Registro é um conjunto de campos existentes em uma tabela, que representa 
uma entidade do mundo real, por exemplo a ficha cadastral de uma pessoa.
A seguir, a imagem ilustra os registros contidos em uma tabela:
 
Registros
Campos
14
Excel VBA - Módulo II
1.3.4. Banco de dados
Ao conjunto de tabelas denominamos banco de dados. Como exemplo, podemos 
imaginar um banco de dados de uma determinada loja, o qual possui a tabela 
de Clientes, a tabela de Produtos, a tabela de Vendas, a tabela de Pedidos e 
tantas outras quanto forem necessárias para acomodar os dados gerados no 
dia a dia. A imagem a seguir ilustra esse exemplo:
BANCO DE 
DADOS
CLIENTES
VENDAS
PRODUTOS
PEDIDOS
15
A linguagem SQL 1
1.3.5. Base de Dados
Geralmente confundida com o banco de dados, a base de dados é o conjunto 
de banco de dados de uma determinada empresa ou instituição. Na base de 
dados, os bancos de dados são relacionados entre si, o que possibilita efetuar 
o controle de um determinado tema, como são atualmente os sistemas de ERP 
(Enterprise Research Planning), utilizados em várias empresas.
1.3.6. Sistema de gerenciamento de banco 
de dados
O Sistema de Gerenciamento de Banco de Dados (SGBD) consiste em um software 
que possibilita facilitar o gerenciamento, as funções de edição, a consulta, o 
controle e a remoção de registros ou de tabelas de um banco de dados. Como 
exemplo, temos o Access, o SQL Server, o Oracle, etc.
16
Excel VBA - Módulo II
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita 
atenção, pois representam os pontos mais importantes do capítulo.
 • SQL significa Linguagem Estruturada de Consulta ou, em inglês, Structured 
Query Language. Como o próprio nome sugere, consiste em um conjunto 
de instruções que possibilita a busca e o tratamento de dados de um banco 
de dados;
 • A linguagem SQL é composta por dois grupos de instruções para gerenciar 
os processos de administração e controle de bancos de dados. São elas: 
DDL e DML;
 • O grupo DDL engloba as instruções CREATE TABLE, DROP TABLE, ALTER 
TABLE, CREATE INDEX e DROP INDEX;
 • O grupo DML engloba as instruções INSERT, SELECT, UPDATE e DELETE.
1
A Linguagem SQL
 Teste seus conhecimentos
18
Excel VBA - Módulo II
1. Qual das alternativas a seguir melhor define a linguagem SQL?
2. Com relação à linguagem SQL, qual das alternativas a seguir 
está correta?
 ☐ a) É uma linguagem de programação utilizada para mesclar dados 
de uma base de um banco relacional. 
 ☐ b) É uma linguagem estruturada para tratamento de códigos de 
programação VB ou VBA. 
 ☐ c) É uma linguagem utilizada para facilitar o acesso a informações 
(por meio de consultas, atualizações e manipulações de dados) 
armazenadas em bancos de dados do tipo relacional.
 ☐ d) É uma linguagem de programação utilizada para armazenar 
dados e informações em tabelas.
 ☐ e) Nenhuma das alternativas anteriores está correta.
 ☐ a) A linguagem SQL é composta por dois grupos de códigos para 
gerenciar os processos de administração e controle de bancos de 
dados. São elas: VB e VBA.
 ☐ b) A linguagem SQL é composta por dois grupos de instruções para 
gerenciar os processos de administração e controle de bancos de 
dados. São elas: DDL e DML.
 ☐ c) A linguagem SQL é composta apenas por dois grupos de 
instruções para gerenciar os processos de administração e controle 
de bancos de dados. São elas: DTS e DML.
 ☐ d) A linguagem SQL é composta apenas por dois grupos de 
instruções para gerenciar os processos de administração e controle 
de bancos de dados. São elas: DTS e DDL.
 ☐ e) Nenhuma das alternativas anteriores está correta.
19
A Linguagem SQL 1
3. Sobre as instruções da linguagem SQL, qual das alternativas a 
seguir está correta?
 ☐ a) A DML (Data Definition Language ou Linguagem de Definição de 
Dados) engloba as instruções que permitem efetuar a criação das 
estruturas de tabelas, de índices e de bancos de dados em geral, 
além de possibilitar alterações nas estruturas criadas e a remoção 
das estruturas existentes. 
 ☐ b) As instruções tipo DML possibilitam executar a manipulação dos 
dados que estejam armazenados nas tabelas de um determinado 
banco de dados. Sendo assim, é possível cadastrar, alterar e excluir 
registros existentes.
 ☐ c) A DDL engloba as instruções que permitem efetuar a criação das 
estruturas de tabelas, de índices e de bancos de dados em geral, 
além de possibilitar alterações nas estruturas criadas e a remoção 
das estruturas existentes. Nesse grupo encontram-se as instruções 
INSERT, SELECT, UPDATE e DELETE.
 ☐ d) Os comandos DDL são acompanhados de uma gama de cláusulas 
que os tornam muito flexíveis. São elas: FROM, WHERE, GROUP BY, 
HAVING e ORDER BY, as quais possibilitam efetuar a aplicação de 
condições que alteram a forma de funcionamento das consultas.
 ☐ e) Nenhuma das alternativas anteriores está correta.
20
Excel VBA - Módulo II
4. Com relação aos comandos DML, qual das alternativas a seguir 
está correta?
 ☐ a) Os comandos DML são acompanhados de uma gama de cláusulas 
que os tornam muito flexíveis. São elas: FROM, WHERE, GROUP BY, 
HAVING e ORDER BY, as quais possibilitam efetuar a aplicação de 
condições que alteram a forma de funcionamento das consultas.
 ☐ b) Os comandos DML são acompanhados de uma gama de cláusulas 
que os tornam muito flexíveis. São elas: INSERT, SELECT, UPDATE e 
DELETE, as quais possibilitam efetuar a aplicação de condições que 
alteram a forma de funcionamento das consultas.
 ☐ c) Os comandos DML são acompanhados de uma gama de cláusulas 
que os tornam muito flexíveis. São elas: CREATE TABLE, DROP 
TABLE, ALTER TABLE, CREATE INDEXe DROP INDEX, as quais 
possibilitam efetuar a aplicação de condições que alteram a forma 
de funcionamento das consultas.
 ☐ d) As alternativas A e B estão corretas.
 ☐ e) Nenhuma das alternativas anteriores está correta.
21
A Linguagem SQL 1
5. Qual das alternativas a seguir está correta?
 ☐ a) Denomina-se tabela o conjunto de dados organizados em 
linhas e colunas. Nas tabelas de bancos de dados, as colunas são 
denominadas Campos e as linhas são denominadas Registros.
 ☐ b) O Sistema de Gerenciamento de Banco de Dados consiste em 
um software que possibilita facilitar o gerenciamento, as funções 
de edição, a consulta, o controle e a remoção de registros ou de 
tabelas de um banco de dados. Como exemplo, temos o Access, o 
SQL, o Oracle, etc.
 ☐ c) Base de dados é o conjunto de tabelas de dados relacionados 
entre si, que possibilita efetuar o controle de um determinado 
tema, como são atualmente os sistemas de ERP (Enterprise Research 
Planning), utilizados em várias empresas. Bases de Dados também 
são conhecidas como Banco de Dados.
 ☐ d) Tabelas são um conjunto de dados organizados em linhas e 
colunas. A um conjunto de tabelas denominamos banco de dados. 
Nas tabelas de bancos de dados, as colunas são denominadas 
Campos e as linhas são denominadas Registros.
 ☐ e) As alternativas A, B e D estão corretas.
2
 9 O que é uma consulta SQL;
 9 A cláusula SELECT;
 9 A cláusula FROM;
 9 A cláusula WHERE;
 9 A cláusula ORDER BY.
Consultas SQL
24
Excel VBA - Módulo II
2.1. Introdução
Neste capítulo, vamos introduzir conceitualmente as consultas SQL. Para isso, 
abordaremos com mais detalhes os comandos, as instruções e as cláusulas 
utilizadas nelas, em especial SELECT, FROM, WHERE e ORDER BY. Também 
apresentaremos alguns critérios de consulta por meio de operadores. E, por fim,para fixar os conceitos, mas ainda sem testar os códigos, vamos demonstrar, 
em planilhas, como seria o retorno visual de uma tabela quando usássemos 
cada instrução.
2.2. O que é uma consulta SQL
Consultas SQL são comandos que possibilitam a recuperação, edição e inserção 
de dados em uma tabela de banco de dados. Através delas, o usuário poderá 
recuperar dados de uma base de dados utilizando critérios de filtragem, bem 
como inserir e alterar dados individualmente ou em grupos de dados.
Para manipular os dados das bases de dados utilizados neste treinamento, 
utilizaremos as instruções SELECT, INSERT, UPDATE e DELETE.
2.3. A cláusula SELECT
Em consultas SQL, a cláusula SELECT é o centro de toda consulta capaz de 
recuperar dados, pois informa ao motor do banco de dados quais campos deverão 
ser retornados na consulta. Para selecionarmos os registros da tabela a serem 
exibidos, precisamos especificar, logo após a palavra SELECT, os campos dos 
registros que devem ser retornados. No exemplo adiante, a cláusula é seguida 
de um asterisco:
SELECT *
Esta instrução significa selecionar tudo, ou seja, retornar todos os dados. Essa 
forma de comando é utilizada quando não há a necessidade de retornar campos 
específicos ou grupos de registros que obedeçam a algum tipo de critério. 
Porém, para completá-la, será necessário informar a localidade a partir da qual 
queremos retornar os dados.
25
Consultas SQL 2
2.4. A cláusula FROM
O objetivo da cláusula FROM é especificar a origem dos dados selecionados 
pela cláusula SELECT. Ao informarmos, por meio da cláusula SELECT, que 
queremos recuperar todos os dados, conforme demonstrado no item anterior, 
é necessário determinar a localidade partir da qual queremos recuperar esses 
dados, isto é, de qual tabela será feita a recuperação dos dados. Através da 
cláusula FROM, é possível informar de qual ou quais tabelas a consulta irá 
recuperar os registros. 
Imaginemos que temos uma tabela tblFuncionarios e temos de fazer várias 
consultas nela. Ainda sem usar os códigos fisicamente, demonstraremos como 
seria o resultado e o funcionamento de cada consulta em planilhas do Excel. 
Por exemplo, para recuperar todos os registros na tblFuncionarios, a seguinte 
instrução SQL deveria ser utilizada:
SELECT * FROM tblFuncionarios
A consulta dessa instrução trará todos os dados da tabela de funcionários, 
incluindo todos os campos e registros, conforme demonstrado na imagem a 
seguir:
26
Excel VBA - Módulo II
Porém, desejamos que a consulta retorne apenas o nome e o ramal de cada 
funcionário. Sendo assim, podemos melhorar a consulta inserindo os nomes 
dos campos na instrução SELECT. Para isso, devemos utilizar a instrução a 
seguir:
SELECT NOME, RAMAL FROM tblFuncionarios
Esta consulta retorna apenas os dados dos campos informados, desprezando os 
demais campos da tabela tblFuncionarios, conforme demonstrado na imagem 
adiante:
 
Esta técnica apresentada é mais eficiente para retornar dados de uma tabela. 
A consulta ficará mais rápida evitando retrabalho, de modo que o usuário não 
precisará eliminar manualmente os dados indesejados.
2.5. A cláusula WHERE
O objetivo da cláusula WHERE é limitar o retorno dos dados. Podemos imaginar 
que o usuário necessite apenas de uma listagem dos funcionários do RH da 
empresa. Nesta listagem, ele deseja relacionar o nome, o sobrenome e o ramal 
de cada funcionário do RH. A cláusula WHERE possibilita esse tipo de filtragem, 
por meio da consulta a seguir:
SELECT NOME, SOBRENOME, RAMAL FROM tblFuncionarios
WHERE DEPARTAMENTO = ‘RH’
27
Consultas SQL 2
A consulta anterior irá retornar os registros da tabela tblFuncionarios, porém, 
serão listados apenas os dados dos campos NOME, SOBRENOME e RAMAL 
dos funcionários do departamento RH. Vejamos a tabela que seria retornada a 
seguir:
 
Devemos observar que a instrução utilizada na cláusula WHERE foi uma string 
de texto. Isto é, utilizou-se a informação DEPARTAMENTO = ’RH’ para filtrar 
a consulta. Nesse caso, como se trata de uma string de texto, o delimitador 
utilizado deve ser aspas simples (‘).
2.5.1. Trabalhando com critérios
Podemos melhorar a consulta inserindo critérios na cláusula WHERE. Imaginemos 
que se queira retornar dados, não apenas dos funcionários do RH, mas o 
relatório terá que listar os funcionários do RH e do TI. Para gerar esse tipo de 
relatório, podemos adicionar as instruções lógicas AND e OR. Nesse exemplo, 
utilizaremos a instrução OR, conforme a consulta modificada a seguir:
SELECT NOME, SOBRENOME, RAMAL FROM tblFuncionarios 
WHERE DEPARTAMENTO = ‘RH’ OR DEPARTAMENTO = ‘TI’
28
Excel VBA - Módulo II
A consulta irá retornar o nome, o sobrenome e o ramal dos funcionários dos 
departamentos RH e TI, conforme ilustrado na tabela a seguir:
2.5.2. Operadores na cláusula WHERE
Na abordagem anterior da clausula WHERE, utilizamos o operador de igualdade, 
cujo símbolo é o sinal de igual (=). Porém, nesta cláusula, além do operador de 
igualdade, existe a possibilidade de utilização de vários tipos de operadores. 
Vejamos, na tabela a seguir, os operadores que podem ser utilizados com a 
cláusula WHERE:
Operador Descrição
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
<> Diferente de
BETWEEN Dentro de uma faixa de valores
LIKE Coincidir com um padrão
IN Contido em uma lista de valores
Todos esses operadores funcionam da mesma maneira que o 
operador de igualdade.
29
Consultas SQL 2
2.5.2.1. Operador BETWEEN
O operador BETWEEN retorna todos os registros que estão entre os limites 
especificados. Como exemplo, utilizaremos SELECT para retornar todos os 
dados de todos os funcionários que ganham entre R$ 1.000,00 e R$ 3.000,00. 
Vejamos a instrução a seguir:
SELECT * FROM tblFuncionarios
WHERE SALARIO BETWEEN 1000 AND 3000
A consulta retornará a seguinte tabela:
 
2.5.2.2. Operador LIKE e os curingas
O operador LIKE retorna os registros coincidentes com os parâmetros 
especificados pela instrução SELECT. Esse padrão geralmente é identificado pelo 
caractere curinga (%), que indica o “restante de”. Por exemplo, se desejarmos 
retornar os registros de todos os funcionários cujo primeiro nome inicia com a 
letra V, basta montar uma instrução SELECT, conforme o exemplo a seguir:
SELECT * FROM tblFuncionarios
WHERE NOME LIKE ‘v%’
A consulta irá retornar os registros desejados, conforme a tabela adiante:
 
30
Excel VBA - Módulo II
2.5.2.3. Operador IN
O operador IN é utilizado para retornar uma lista de registros que coincidem 
com os parâmetros especificados por este operador. Para listar todos os dados 
dos funcionários de RH e TI, por exemplo, basta realizar a seguinte consulta:
SELECT * FROM tblFuncionarios
WHERE DEPARTAMENTO IN (‘RH’,‘TI’)
A consulta retornará os registros conforme a tabela a seguir:
 
2.6. A cláusula ORDER BY
A cláusula ORDER BY tem como finalidade classificar os registros de uma tabela 
especificada em ordem crescente ou decrescente por um ou mais campos, de 
acordo com o que foi informado na instrução SELECT. Para especificar uma 
ordem de classificação, a cláusula ORDER BY deverá ser incluída no final da 
consulta SELECT e seguida do campo ou dos campos aos quais devemos aplicar 
a ordem de classificação.
Para montar uma consulta que retorne uma tabela com todos os dados dos 
funcionários classificados primeiro por filial e em seguida por salário, criamos 
a instrução SELECT demonstrada a seguir:
SELECT * FROM tblFuncionarios
ORDER BY FILIAL, SALARIO
31
Consultas SQL 2
A consulta retornará a tabela a seguir:
 
2.6.1. A palavra-chave DESC
Ao aplicar a cláusula ORDER BY a um ou mais campos de uma tabela, os 
registros dos campos indicados na cláusula serão classificados naturalmente em 
ordem crescente. Porém, existe uma maneira de classificar um campo numérico 
em ordem decrescente, isto é, do maior para o menor valor. Para isso, basta 
acrescentar a palavra DESC à cláusula ORDER BY. A consulta a seguir retornará 
os campos NOME e SALÁRIO em ordem decrescentede salário: 
SELECT NOME, SALARIO FROM tblFuncionarios
ORDER BY SALARIO DESC
32
Excel VBA - Módulo II
A instrução SELECT deverá produzir o resultado demonstrado a seguir:
 
2.6.2. A instrução TOP
A instrução TOP possibilita exibir os primeiros ou os últimos registros de uma 
tabela. Podemos, por exemplo, exibir apenas os cinco primeiros registros ou 
os três últimos registros de uma tabela. A instrução TOP é inserida junto à 
cláusula SELECT. 
Para exibir os registros de cinco funcionários, do maior salário para o menor, 
basta criar a instrução SELECT demonstrada a seguir:
SELECT TOP 5 NOME, SALARIO FROM tblFuncionarios
ORDER BY SALARIO DESC
33
Consultas SQL 2
A instrução deverá produzir a seguinte tabela:
 
Devemos observar que a instrução foi configurada para exibir os salários em 
ordem decrescente, ou seja, do maior para o menor valor, e listar apenas os 
cinco primeiros. A linguagem SQL não possui uma instrução BOTTOM. Porém, 
como visto na instrução do exemplo, podemos simular a listagem dos últimos 
registros de uma tabela classificando-os em ordem decrescente e, em seguida, 
extraindo a quantidade de registros desejada. 
34
Excel VBA - Módulo II
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita 
atenção, pois representam os pontos mais importantes do capítulo.
 • Em consultas SQL, a cláusula SELECT é o centro de toda consulta capaz de 
recuperar dados, pois informa ao motor do banco de dados quais campos 
deverão ser retornados na consulta;
 • O objetivo da cláusula FROM é especificar a origem dos dados selecionados 
pela cláusula SELECT;
 • O objetivo da cláusula WHERE é limitar o retorno dos dados;
 • A cláusula ORDER BY tem como finalidade classificar os registros de uma 
tabela especificada em ordem crescente ou decrescente por um ou mais 
campos informados na instrução SELECT.
2
Consultas SQL
 Teste seus conhecimentos
36
Excel VBA - Módulo II
1. Qual das alternativas a seguir melhor define a cláusula SELECT?
2. Qual das alternativas a seguir melhor define a cláusula FROM?
 ☐ a) Em consultas SQL, a cláusula SELECT é o centro de toda consulta 
que recupera dados. Ela informa ao motor do banco de dados quais 
campos deverão ser retornados na consulta. 
 ☐ b) Em consultas SQL, a cláusula SELECT é o centro de toda consulta 
que insere dados. Ela informa ao motor do banco de dados quais 
campos deverão ser inseridos nas tabelas. 
 ☐ c) Em consultas SQL, a cláusula SELECT é o centro de toda consulta 
que elimina dados. Ela informa ao motor do banco de dados quais 
campos deverão ser apagados na consulta.
 ☐ d) Em consultas SQL, a cláusula SELECT é o centro de toda consulta 
que retorna dados. Ela informa ao motor do banco de dados quais 
campos deverão ser selecionados na consulta.
 ☐ e) Nenhuma das alternativas anteriores está correta.
 ☐ a) O objetivo da cláusula FROM é especificar o destino dos dados 
selecionados pela cláusula SELECT.
 ☐ b) O objetivo da cláusula FROM é ordenar os dados selecionados 
pela cláusula SELECT.
 ☐ c) O objetivo da cláusula FROM é especificar a origem dos dados 
selecionados pela cláusula SELECT.
 ☐ d) O objetivo da cláusula FROM é limitar o retorno dos dados 
selecionados pela cláusula SELECT.
 ☐ e) Nenhuma das alternativas anteriores está correta.
37
Consultas SQL 2
3. Qual das consultas a seguir permite retornar todos os dados da 
tabela tblFuncionarios?
4. Qual das alternativas a seguir melhor define a cláusula WHERE?
 ☐ a) FROM * SELECT tblFuncionarios 
 ☐ b) SELECT tblFuncionarios FROM *
 ☐ c) SELECT * FROM tblFuncionarios
 ☐ d) WHERE * SELECT tblFuncionarios
 ☐ e) Nenhuma das alternativas anteriores está correta.
 ☐ a) O objetivo da cláusula WHERE é ordenar os dados da tabela. 
 ☐ b) O objetivo da cláusula WHERE é eliminar os dados de uma tabela. 
 ☐ c) O objetivo da cláusula WHERE é limitar o retorno dos dados.
 ☐ d) O objetivo da cláusula WHERE é especificar a origem dos dados.
 ☐ e) Nenhuma das alternativas anteriores está correta.
38
Excel VBA - Módulo II
5. Qual das consultas a seguir permite retornar, de todos os dados 
da tabela tblFuncionarios, apenas os dados dos funcionários 
registrados como ANALISTA ou PROGRAMADOR no campo CARGO?
 ☐ a) SELECT CARGO FROM tblFuncionarios 
 WHERE CARGO IN (‘ANALISTA’,’PROGRAMADOR’)
 ☐ b) SELECT ANALISTA, PROGRAMADOR FROM tblFuncionarios 
 WHERE CARGO IN (‘ANALISTA’,’PROGRAMADOR’)
 ☐ c) SELECT * FROM tblFuncionarios 
 WHERE CARGO IN (‘ANALISTA’,’PROGRAMADOR’)
 ☐ d) SELECT * FROM tblFuncionarios
 WHERE (‘ANALISTA’, ‘PROGRAMADOR’) 
 
 ☐ e) Nenhuma das alternativas anteriores está correta.
3
 9 Modelo de objetos DAO;
 9 Conceitos do SQL;
 9 Importação de dados de uma base Access.
DAO – Data Access 
Object
40
Excel VBA - Módulo II
3.1. Introdução
No decorrer deste capítulo, conheceremos o Objeto DAO e aprenderemos como 
importar uma tabela de um banco de dados externo para o Excel 2013, isto por 
meio da referência de acesso a dados.
O objeto DAO (Data Access Object ou Objeto de Acesso a Dados) permite 
executar consultas, atualizar valores nas tabelas do banco de dados e criar 
a estrutura dos bancos de dados, inclusive tabelas, consultas armazenadas e 
relações entre tabelas.
O DAO era usado pelos desenvolvedores VB para obter acesso à área de trabalho 
e seus bancos de dados cliente/servidor. Mas, com o advento do ADO, é agora 
adequado para ser usado, principalmente, com os bancos de dados Jet. Em um 
capítulo posterior, iremos abordar o objeto ADO.
Nosso objetivo nesse treinamento é executar consultas para retorno de dados 
de tabelas Access e .txt para planilhas do Excel. As consultas que permitirão as 
ações de retorno de dados serão escritas em linguagem SQL.
41
DAO – Data Access Object 3
DBEngine
Objeto
Workspace
Database
TableDef
User
Group
Error
Field Field Field FieldField
Field
User
Field
Index Parameter
QueryDef RecordSet Container
Objeto e 
Coleção
Relation
3.2. Modelo de objetos DAO
O modelo de objetos DAO é bem complexo. Ele possui vários tipos de elementos 
e coleções, as quais possuem diversos objetos, cada qual com sua propriedade, 
método e objetos subordinados próprios. A imagem a seguir demonstra o 
modelo DAO: 
42
Excel VBA - Módulo II
Neste capítulo, abordaremos o objeto Database e sua coleção de objetos, 
mais especificamente, o RecordSet. As coleções do objeto Database são 
representadas pela imagem a seguir:
Objeto Database
Objeto Database
Coleção Properties
Coleção QueryDefs
Coleção RecordSets
Coleção Relations
Coleção TableDefs
PROPRIEDADES MÉTODOS
Colating Order Close
Connect CreateProperty
Objeto Connection CreateQueryDef
Containers CreateRelation
DesignerMasterID Create TableDef
Name Execute
QueryDefs MakeReplica
Query Timeout NewPassword
Records Affected OpenRecordset
Recordsets PopulatePartial
ReplicaID Synchronize
Relations
TableDefs
Transactions
Updatable
Version
43
DAO – Data Access Object 3
3.3. Importando dados de uma base 
Access
Neste tópico, importaremos dados de tabelas do banco de dados NorthWind 
Trade do gerenciador de banco de dados Access. Os dados serão transportados 
de uma tabela desta base de dados para uma planilha do Excel.
O banco de dados NorthWind, assim como outros, é disponibilizado 
pela Microsoft como bancos de dados de exemplo. Eles são usados 
para testes dos desenvolvedores e geralmente vêm instalado junto 
com alguns softwares da Microsoft, como Visual Studio, Access ou 
SQL Server. Como precisaremos de um banco pronto para consultas, 
vamos usá-lo dentro do VBA.
3.3.1. Configurações iniciais
Para iniciar as configurações, o arquivo banco de dados Northwind.mdb, que 
acompanha este material, deverá ser instalado na em um diretório. Para isso, 
crie uma pasta chamada temp em um diretório de sua preferência e, então, 
insira o banco de dados Northwind nele. No exemplo a seguir, inserimos o 
Northwind no diretório Documentos, na pasta temp, conforme a imagem aseguir:
 
44
Excel VBA - Módulo II
Após instalarmos o arquivo Northwind na pasta temp, devemos preparar o 
VBA do Excel para trabalhar com DAO. Para isso, seguir os passos adiante:
1. Abra uma pasta de trabalho Excel e salve-a na mesma pasta temp em que foi 
salvo o banco de dados Northwind.
Este procedimento facilitará a construção do código VBA. Em vez de indicar 
a pasta que contém o banco de dados, podemos utilizar o método Path de 
ActiveworkBook posteriormente, que informará o endereço da pasta de trabalho 
atual. Esse atalho evita que o programador tenha que informar o endereço em 
que se encontra o arquivo de banco de dados.
2. Após salvar a pasta de trabalho e abrir o VBE, vamos criar um módulo e 
habilitar a referência DAO no VBA. Faça de acordo com as imagens a seguir:
 
 
 
 
Após inserir o módulo, ative o menu 
Ferramentas e clique sobre a opção 
Referências.
Em seguida, clique sobre o botão 
OK para confirmar a referência.
45
DAO – Data Access Object 3
 
3.3.2. Construindo o código VBA
Concluídas as configurações iniciais, devemos construir o código que irá trazer 
os registros da tabela Customers do banco de dados Northwind. Para isso, 
seguir os passos adiante: 
1. Crie uma rotina ImportTbl e declare as seguintes variáveis:
 • Para definir o banco de dados:
 Dim Db as Database
Clicar no botão 
OK para registrar 
o atalho.
Desça o menu da janela de diálogo e 
clique sobre a referência Microsoft 
DAO 3.6 Object Library.
46
Excel VBA - Módulo II
 • Para o objeto Recordset (os registros da tabela):
 Dim Rs as Recordset
 • Para receber o objeto planilha:
 Dim Ws as Object
 • Para a variável do loop For:
 Dim i as Integer
O script a seguir demonstra como a rotina deverá ficar após a declaração das 
variáveis:
2. Alimente a variável de objeto Ws, que receberá o objeto Plan1. Esta variável 
foi criada apenas para facilitar as referências que faremos à planilha durante 
a codificação e o elemento é meramente opcional. Observemos a imagem a 
seguir:
3. Após definir o objeto banco de dados e o objeto planilha, a variável Db 
receberá o banco de dados.
O código a seguir define a variável. Observemos que a instrução OpenDatabase 
recebe o endereço e o nome do banco de dados. O endereço está contido na 
instrução ThisWorkbook, a qual informa que o endereço será o mesmo da 
pasta de trabalho do código VBA. Essa instrução está concatenada (&) com o 
nome do banco de dados entre aspas para completar o endereço.
 
47
DAO – Data Access Object 3
4. Defina o objeto Recordset. Este objeto representa um conjunto de registros 
de uma determinada tabela ou um conjunto de registros resultantes de uma 
consulta SQL. Nesse caso, o Recordset retornará todos os dados da tabela 
Customers do banco de dados Northwind.
Uma vez definido o banco de dados e o conjunto de registros desta base de 
dados que traremos para a planilha, devemos configurá-la para receber estes 
dados. Para que o usuário tenha a garantia de que sempre que carregar os 
dados da tabela Access, estes sejam únicos e não se misturem com os dados 
anteriores, é conveniente limpar os dados da tabela para que possa receber 
dados novos. 
5. Limpe os dados da planilha para que possa receber os novos dados. O objeto 
Cells se refere a todas as células da planilha ativa. O método ClearContents 
apaga o conteúdo das células indicadas;
6. Com a planilha limpa, descarregue os dados. O loop a seguir monta o 
cabeçalho da tabela. Este código também é opcional, pois o usuário poderá ter 
uma planilha com cabeçalho próprio, necessitando, apenas, dos dados que são 
atualizados periodicamente; 
7. Formate o cabeçalho. O código a seguir aplica negrito ao cabeçalho da tabela: 
48
Excel VBA - Módulo II
8. Com o cabeçalho da tabela inserido e formatado, descarregue os dados a 
partir da célula A2 da planilha. O código a seguir insere todos os registros da 
tabela Customers a partir desta célula através da instrução Recordset:
Geralmente, quando importamos dados de outra fonte de dados, estes entram 
truncados nas colunas. Invariavelmente, é necessário ajustá-las à largura do 
maior registro de cada coluna. É comum, nestas ocasiões, aplicarmos um duplo 
clique na divisa entre duas colunas para que esta se ajuste automaticamente à 
largura do maior registro. Este procedimento poderá ser efetuado através de 
código VBA, inserindo a instrução AutoFit a todas as células da tabela. 
9. Utilize o comando AutoFit para efetuar o ajuste automático. Como é utilizado 
o objeto Cells, ele efetua o ajuste automático a todas as células da planilha. Como 
essa planilha possui apenas a tabela de dados, isso não acarretará problema 
algum. O script a seguir demonstra como esse comando é utilizado: 
10. Com a importação dos dados concluída, assim como a formatação da 
tabela, encerre os trabalhos (o código) fechando o banco de dados e o objeto 
RecordSet, através dos comandos demonstrados na imagem a seguir: 
49
DAO – Data Access Object 3
Após inserir este código, a nossa rotina está pronta. E deve estar assim:
11. Para ativá-la, vamos criar um atalho de teclado CTRL+ SHIFT+ H. Primeiro, 
devemos nos certificar de que a tecla CAPS LOCK do teclado esteja inativa, ou 
seja, o teclado não esteja no modo maiúsculo. Em seguida, faça o seguinte:
11.1 Retorne à pasta de trabalho do Excel e, na guia Exibição, clique no 
botão Macros, conforme a imagem adiante: 
50
Excel VBA - Módulo II
11.2 Na janela Macro, clique no botão Opções;
11.3 Posicione o cursor do mouse no campo destacado na imagem, 
 mantenha a tecla SHIFT pressionada e, então, pressione a tecla da letra H;
 
51
DAO – Data Access Object 3
11.4 Conclua as configurações clicando em OK;
11.5 Na janela Macro, clique em Cancelar.
12. Agora vamos finalmente executar todo o código que escrevemos que traz 
os dados da tabela Customers da base Northwind. Para isso, posicione a pasta 
de trabalho na Plan1 e utilize o atalho de teclado CTRL+ SHIFT+H. Observemos 
o resultado final na imagem a seguir:
O campo informará o 
atalho de teclado.
Clicar no botão OK para 
registrar o atalho.
52
Excel VBA - Módulo II
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita 
atenção, pois representam os pontos mais importantes do capítulo.
 • O objeto DAO (Data Access Object ou Objeto de Acesso a Dados) permite 
executar consultas, atualizar valores nas tabelas do banco de dados e criar 
a estrutura dos bancos de dados, inclusive tabelas, consultas armazenadas 
e relações entre tabelas;
 • Para utilizar o objeto DAO no Excel VBA, é necessário referenciá-lo no menu 
Ferramentas do VBE;
 • O objeto Recordset representa um conjunto de registros de uma determinada 
tabela ou um conjunto de registros resultantes de uma consulta SQL. 
3
DAO – Data Access 
Object
 Mãos à obra!
54
Excel VBA - Módulo II
Laboratório 1
Neste laboratório, vamos construir um sistema para importar os dados da tabela 
Products do banco de dados Northwind, utilizando o objeto DAO, de acordo 
com as seguintes instruções:
1. Crie uma pasta com o nome desejado e coloque o arquivo Northwind.mdb 
dentro dela;
2. Abra um arquivo do Excel e salve-o como xlsm dentro da mesma pasta que 
você acabou de criar;
3. Crie uma planilha Painel e uma Produtos;
4. Com base no que aprendeu durante o capítulo, crie uma rotina que exerça a 
função de transportar dos dados da tabela Products para a planilha Produtos;
5. Na planilha Painel, carregue a rotina através de um botão de controle de 
formulário chamado Importar Tabela de Produtos.
Ao final da importação, o sistema deverá apresentará a seguinte mensagem:
O número de registros é 
uma variável.
Confira o resultado no arquivo Cap3 –ExercicioProductsLab.
xlsm que acompanha este material.
4
 9 O objeto Connection ADO;
 9 Conceitos do SQL;
 9 Importando dados de uma base Access.
ADO - ActiveX Data 
Objects
56
Excel VBA - Módulo II
4.1. Introdução
O ADO, ou ActiveX Data Objects, criado pela Microsoft, é consideradouma 
técnica para acessar bancos de dados a partir de uma página Web. Como o ADO 
é fornecido na forma de uma biblioteca ActiveX Server (como são o DAO e o 
RDO), esta técnica poderá ser usada em aplicações VB, sem problemas. Muitas 
vezes, podemos pensar que é muito mais fácil ter um banco de dados cliente/
servidor usando o ADO do que a alternativa DAO, descrita no capítulo anterior. 
Porém, embora a tecnologia ADO seja mais recente e mais rápida que a DAO, a 
segunda é mais eficiente no tratamento de dados com VBA.
4.2. O objeto Connection ADO
Nos objetos ADO, podemos usar o objeto Connection para estabelecer uma 
conexão com uma fonte de dados. Para informar ao ADO sobre como obter 
a fonte de dados, devemos fornecer informações na forma de uma string de 
conexão idêntica à string de conexão ODBC. A propriedade ConnectionString 
do objeto Connection será utilizada para fazer isso. Também haverá a opção 
de escolher qual provedor usar, definindo a propriedade Provider do objeto 
Connection.
4.2.1. Especificando um provedor OLE DB e 
uma string de conexão
Devemos especificar um provedor OLE DB usando a propriedade Provider do 
objeto Connection ADO. Caso não seja especificado um provedor ou se não for 
utilizado um objeto Connection, será considerado o provedor padrão, que é o 
provedor ODBC para OLE DB, também conhecido como MSDASQL.
A propriedade Provider do objeto Connection é uma string de texto que informa 
à conexão qual provedor OLE DB usar para executar os comandos no servidor. 
Para utilizar o provedor ODBC para OLE DB, não será necessário especificar 
um provedor, já que ele é o provedor padrão. Contudo, se desejar, poderá 
especificá-lo para maior clareza.
Uma string de conexão no ADO será utilizada para fornecer informações sobre 
como conectar o servidor do banco de dados. Quando utilizarmos o provedor 
ODBC para OLE DB, a string de conexão será igual a uma string de conexão 
ODBC. Isso significa que as informações exatas esperadas pelo driver ODBC 
poderão variar entre as implementações. Para os outros provedores, a string de 
conexão poderá ter uma sintaxe totalmente diferente.
57
ADO - ActiveX Data Objects 4
Quando utilizarmos o provedor ODBC, a propriedade ConnectionString poderá 
ser um Data Source Name (DSN ou Nome da Fonte de Dados) ou poderá ser uma 
conexão sem DSN. A seguir, temos um exemplo de conexão com um banco de 
dados que usa o provedor ODBC com um DSN:
Cn.Provider = “MSDASQL” 
Cn.ConnectionString = “DSN=Novelty;”
A posição do objeto Connection ADO no modelo de objetos ADO, assim como 
suas propriedades e métodos, é mostrada na imagem a seguir:
Objeto Connection
Coleção Errors
Objeto Error
Objeto Properties
Objeto Command
Objeto Recordset
Coleção Properties
PROPRIEDADES MÉTODOS EVENTOS
Atributos BeginTrans BeginTransComplete
CommandTimeout Cancel CommitTransComplete
ConnectionString Close ConnectComplete
ConnectionTimeout CommitTrans Disconnect
CursorLocation Execute ExecuteComplete
DefaultDatabase Open InfoMessage
Coleção Errors OpenSchema RollbackTransComplete
IsolationLevel RollbackTrans WillConnect
Mode WillExecute
Coleção Properties
Provider
State
Version
58
Excel VBA - Módulo II
4.3. Importando dados de uma base 
Access
Assim como fizemos no DAO, neste tópico importaremos dados de tabelas do 
banco de dados NorthWind Trade do gerenciador de banco de dados Access. 
Os dados serão transportados de uma tabela desta base de dados para uma 
planilha do Excel. Os dados da planilha mostrarão o valor total de compras e a 
quantidade realizada por cada cliente será vista mais adiante.
4.3.1. Configurações iniciais
Para iniciar as configurações, o arquivo banco de dados Northwind.mdb, que 
acompanha este material, deverá ser instalado em um diretório. Crie uma pasta 
chamada temp em um diretório de sua preferência e insira o banco de dados 
Northwind nele. No exemplo a seguir, inserimos o Northwind no diretório 
Documentos, na pasta temp, conforme a imagem adiante:
Após instalarmos o arquivo Northwind na pasta temp, devemos preparar o 
VBA do Excel para trabalhar com ADO. Para isso, seguir os passos adiante:
Objeto Recordset
59
ADO - ActiveX Data Objects 4
1. Abra uma pasta de trabalho Excel e salve-a na mesma pasta temp em que foi 
salvo o banco de dados Northwind;
Este procedimento facilitará a construção do código VBA. Assim como fizemos 
no capítulo sobre DAO, em vez de indicar a pasta em que está o banco de 
dados, podemos utilizar o método Path de ActiveworkBook, que informa o 
endereço da pasta de trabalho atual. 
2. Após salvar a pasta de trabalho, abra o VBE e insira um módulo, igual fizemos 
no capítulo anterior. Menu Inserir/ Módulo.
Após inserir um módulo, devemos indicar a referência ADO. Atualmente, a 
referência Microsoft ADO está em sua sexta versão. Porém, se o objetivo for 
desenvolver uma rotina que rode sem preocupações em várias versões do Excel, 
situação comum em várias empresas, o melhor a fazer é indicar a referência 
Microsoft ADO 2.1. Esta versão é comum a todas as versões do Excel. 
3. Para indicar a referência ADO, vamos fazer o mesmo que fizemos no capítulo 
anterior para ativar a referência DAO. Siga os passos:
3.1. Clique no menu Ferramentas e escolha a opção Referências;
3.2. Na janela Referências, localize o Microsoft Activex Data Object 2.1 
Library, marque a caixa de seleção e depois em Ok.
60
Excel VBA - Módulo II
4.3.2. Código VBA – String de conexão
Concluídas as configurações iniciais, devemos construir o código que trará os 
registros da tabela Customers do banco de dados Northwind. Para isso, abrir 
a rotina ImportTable e declarar as seguintes variáveis:
Dim Sql As String
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim i As Integer
A imagem a seguir demonstra como a rotina deverá ficar após a declaração das 
variáveis:
Após declarar as variáveis, devemos estabelecer a conexão com a base de dados 
Northwind, conforme o código a seguir:
61
ADO - ActiveX Data Objects 4
Observe que, assim como no capítulo anterior, usamos o ActiveWorkBook.
Path para não precisarmos colocar o caminho do arquivo mdb. Exatamente por 
isso, colocamos o arquivo Excel e o banco de dados na mesma pasta (temp). 
Isso é útil porque, caso precisemos carregar o projeto em um dispositivo de 
armazenamento removível, não precisaremos especificar o caminho novamente, 
apenas colocar os arquivos vinculados na mesma pasta.
4.3.2.1. Código VBA – Objeto Recordset
A definição do objeto Recordset ADO é parecida com a do objeto DAO. Este 
objeto é uma maneira de acessar as informações recuperadas do provedor 
de dados e, por possuir muitas das propriedades e métodos do conjunto de 
registros do modelo DAO, podemos trabalhar com ele igualmente.
A posição do objeto RecordSet ADO no modelo de objetos ADO, assim como 
suas propriedades, é demonstrada na imagem a seguir:
 
62
Excel VBA - Módulo II
PROPRIEDADES MÉTODOS EVENTOS
AbsolutePage AddNew EndOfRecordset
AbsolutePosition Cancel FetchComplete
ActiveCommand CancelBatch FetchProgress
ActiveConnection CancelUpdate FieldChangComplete
BOF Clone MoveComplete
Bookmark CompareBookmarks RecordChangeComplete
CacheSize Delete RecordsetChangeComplete
CursorLocation Find WillCangeField
CursorType GetRows WillChangeRecord
DataMember GetString WillChangeRecordset
DataSource Move WillMove
EditMode MoveFirst
EOF MoveLast
Coleção Fields MoveNext
Filter MovePrevius
LockType NextRecordset
MarshalOptions Open
MaxRecords Requery
PageCount Resync
PageSize Save
Coleção Properties Supports
RecordCount Update
Sort UpdateBatch
Source
State
Status
StayInSync
Objeto Recordset
Coleção Fields
Objeto Field
Objeto Property
Coleção Properties
63
ADO - ActiveX Data Objects 4
No objeto ADO, é possível criar um objeto RecordSet que não requer implícito um 
objeto Connection. É diferente de ter um conjunto de registros desconectado, 
pois, a conexão existe, apenas não há variável do objeto para representá-la.
Continuando a construção do sistemade importação de dados da tabela 
Customers do banco de dados Northwind, devemos escrever o código com a 
instruções SQL que resgata os dados das tabelas do banco de dados: 
Como podemos observar, a variável Sql recebe a instrução SELECT para retornar 
dados das tabelas Customers ,Orders e Order Details, e quando utiliza a 
instrução INNER JOIN, ela faz comparação entre os “campos ID’s” das tabelas, 
podendo assim extrair dados do relacionamento entre elas (tabelas).
Da tabela Customers desse banco de dados, utilizamos o 
campo CustomerID. Esse campo já está relacionado com a 
tabela Orders (para conseguir identificar qual pedido é de qual 
cliente). Então, temos de ver a quantidade de cada pedido na 
tabela Order Details, referenciando o Order ID dele com o ID 
da tabela Orders.
Após montar a instrução SQL na variável, é definida a instrução Recordset e os 
dados são registrados na planilha ativa, conforme a imagem a seguir:
 
64
Excel VBA - Módulo II
 
A parte mais importante, que é a importação dos dados, foi concluída. Agora, 
podemos finalizar o procedimento, formatando as células do cabeçalho e 
ajustando sua largura, pois até o presente momento o resultado está assim: 
Este trecho fecha a conexão 
com o banco.
Este trecho cria o 
cabeçalho da tabela na 
planilha ativa.
Este trecho registra os dados 
linha a linha na planilha.
65
ADO - ActiveX Data Objects 4
Então, insira o código a seguir e execute-o:
66
Excel VBA - Módulo II
O código completo deverá estar assim:
67
ADO - ActiveX Data Objects 4
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita 
atenção, pois representam os pontos mais importantes do capítulo.
 • A tecnologia ADO é mais recente e mais rápida que a DAO;
 • Um provedor OLE DB deve ser especificado usando a propriedade Provider 
do objeto Connection ADO.
4
ADO - ActiveX Data 
Objects
 Mãos à obra!
70
Excel VBA - Módulo II
Laboratório 1
Neste laboratório, vamos construir um sistema para importar os dados da tabela 
Products, do banco de dados NorthWind, utilizando o objeto ADO, de acordo 
com as seguintes instruções: 
1. Assim como fizemos no capítulo deste laboratório, importe o campo 
Customer ID da tabela Customers (que já tem relacionamento com a tabela 
Orders por causa da sua identificação), referenciando pelo INNER JOIN a 
relação do ID de cada customer com a quantidade e o preço na tabela 
Order Details (Unit Price e Quantity). Se houver dúvida com os nomes de 
campos e como eles funcionam, abra o arquivo Northwind.mdb no Access 
e verifique as tabelas, campos e relacionamentos;
2. Depois, registre todos os dados em uma planilha, com os nomes Código, 
Quantidade e Valor Unitário;
3. Selecione todas as células preenchidas e dê um nome, por exemplo reg_
dados. E referencie-o na propriedade Row Source de um List box em um 
formulário fmr_Orders. Ele deve se parecer mais ou menos assim:
Confira o resultado no arquivo Cap4 –ExercicioOrdersLab.xlsm 
que acompanha este material.
5
 9 Preparando o ambiente;
 9 Construindo a rotina;
 9 Atribuindo a rotina a um controle de 
 formulário.
Importando dados 
de um arquivo TXT
72
Excel VBA - Módulo II
5.1. Introdução 
Nos capítulos anteriores, observamos a importação de arquivos de tabelas de 
uma base de dados Access. Este procedimento é comum em empresas que 
utilizam esse gerenciador de banco de dados como ponte entre uma base SQL 
ou Oracle e as planilhas dos usuários. Porém, em algumas situações, o usuário 
poderá obter dados diretamente da base SQL ou Oracle, através do Excel. Nesse 
caso, o usuário solicitará os dados ao administrador da base, o qual irá gerar os 
dados em arquivo .txt.
Quando o usuário solicita dados diretamente ao responsável pela base, sem a 
necessidade de utilização do Access como ponte entre a base e as planilhas, é o 
próprio responsável pela base que criará as consultas dentro do SQL ou Oracle, 
as quais retornarão exatamente o que o usuário necessita da base corporativa. 
Nesse caso, o usuário deverá, apenas, transferir os dados para a planilha.
Neste capítulo, vamos acompanhar o desenvolvimento de uma rotina para 
capturar arquivos .txt para uma planilha Excel.
5.2. Preparando o ambiente
O arquivo TabMedic.txt, que utilizaremos neste capítulo, é uma tabela de vendas 
de medicamentos de uma fictícia indústria farmacêutica, e deve ser instalado 
na mesma pasta temp que você criou e usou nos dois capítulos anteriores. No 
mesmo local, vamos criar uma nova pasta de trabalho, denominada BDTesteTxt, 
contendo apenas uma planilha.
Após salvar o arquivo no endereço recomendado, devemos alternar para o VBE e 
inserir um novo módulo. Neste módulo, devemos inserir as seguintes variáveis, 
demonstradas na imagem adiante:
73
Importando dados de um arquivo TXT 5
Em que:
 • A variável Caminho receberá apenas o caminho da pasta em que está o 
arquivo .txt (temp). Esta variável será concatenada com a variável do nome 
do arquivo .txt para formar o caminho completo do arquivo;
 • A variável NomeArq receberá apenas o nome do arquivo .txt instalado 
na pasta (TabMedic.txt). Esta variável será concatenada com a variável de 
endereço para formar o caminho completo do arquivo;
 • A variável CamiArq receberá o caminho completo do arquivo .txt. Isto é, o 
endereço da pasta (temp) e o nome do arquivo TabMedic.txt. Esta variável 
será utilizada no comando que abrirá o arquivo .txt;
 • A variável Arq receberá o nome do arquivo principal, BDTesteTxt.xlsm. 
Ela será necessária para facilitar a ativação do arquivo principal em um 
determinado momento da rotina; 
 • A variável App receberá o objeto Application. Este procedimento facilitará 
a escrita da rotina, pois, para obter uma propriedade ou método de 
Application, não haverá a necessidade de digitar o nome completo do 
objeto, bastará digitar “App.” e selecionar a propriedade, método ou objeto 
desejado.
5.3. Construindo a rotina
Devemos iniciar a construção da rotina alimentando a variável de objeto App. 
Dessa maneira, a digitação dos códigos será simplificada. Observemos a imagem 
a seguir:
74
Excel VBA - Módulo II
Em seguida, devemos alimentar as variáveis de endereço Arq, Caminho, 
NomeArq e CamiArq, de acordo com a imagem a seguir:
Observemos que a variável Arq recebe a instrução ActiveWorkbook.Name. 
Esta instrução captura o nome da workbook (pasta de trabalho) ativa. Como a 
rotina é iniciada na pasta de trabalho BDTesteTxt, a variável receberá o nome 
desta pasta.
Na variável Caminho, veja também que utilizamos a instrução ThisWorkBook.
Path, que captura o caminho de acordo com a pasta do arquivo atual. A variável, 
então, recebe o caminho referente à localização do arquivo, seja ela qual for.
Outra questão a observar é a alimentação da variável CamiArq. Após alimentar 
as variáveis Caminho com o endereço do arquivo .txt e NomArq com o nome 
do arquivo .txt, a variável CamiArq recebe a variável Caminho concatenada com 
a barra e a variável NomeArq. Sendo assim, essa variável agregará o caminho 
completo do arquivo .txt.
Após alimentar as variáveis de endereço, devemos ajustar a pasta de trabalho. 
A parte da rotina a seguir verifica a quantidade de planilhas existentes na pasta:
 
A variável n recebe o número de planilhas 
da pasta de trabalho.
75
Importando dados de um arquivo TXT 5
Em seguida, através do loop demonstrado na imagem adiante, a rotina elimina 
as planilhas excedentes (se houverem), deixando apenas uma: 
 
 
Após configurar a pasta de trabalho, a próxima instrução da rotina irá abrir o 
arquivo .txt e transformá-lo em uma nova planilha na pasta de trabalho ativa. 
O comando utilizado é similar à ação de ativar a guia Arquivo na pasta de 
trabalho, selecionar o comando Abrir e indicar o local, nome e tipo de arquivo a 
ser aberto. O comando OpenText informa que o arquivo aberto será tipo texto. 
Vejamos as instruções a seguir:
A instrução anterior abrirá o arquivo .txt em forma de nova planilha, incluindo 
todos os dados.O resultado obtido é o mesmo quando abrimos um arquivo 
.txt através da pasta de trabalho. Por padrão, o Excel cria uma nova pasta de 
trabalho com apenas uma planilha contendo os dados do arquivo .txt. 
O loop rodará até que n 
seja igual a 1.
Exclui a planilha número n.
Define o tipo de campo como 
delimitado, ou seja, caracteres 
como vírgula ou tabulação 
separam cada campo.
Nome e endereço 
completo do 
arquivo .txt.
O método OpenText informa 
que o tipo de arquivo a abrir 
será arquivo texto.
Decrementa 1 ao número n 
a cada loop.
Define que o qualificador 
de textos será aspas.
Informa que o caractere separador 
de campo será TAB (tabulação) 
e desabilita os demais (ponto e 
vírgula, vírgula e espaço).
76
Excel VBA - Módulo II
Na próxima etapa, devemos transferir essa planilha para a pasta de trabalho 
BDTesteTxt. A instrução da imagem adiante transfere a planilha (única) para a 
workbook principal e a instala após a primeira planilha: 
 
 
O comando da instrução anterior fecha automaticamente a pasta de trabalho 
da planilha que foi transferida. Isso ocorre porque ela possui apenas uma 
planilha (a do arquivo ). Normalmente, esse procedimento gera uma mensagem 
informando o ocorrido, porém, no início da rotina, desabilitamos os avisos do 
sistema através da instrução . Observemos a instrução a seguir que mostra o 
início da rotina:
 
Após instalar a planilha com os dados do arquivo texto na pasta de trabalho 
atual, o próximo passo é configurar os dados da pasta. Como são muitos dados 
e de vários tamanhos, eles aparecem truncados nas colunas. A instrução a seguir 
apenas aplicará o ajuste automático às colunas: 
 
As próximas instruções devolverão ao estado normal a atualização de tela e os 
avisos do sistema: 
 
Define que a movimentação deve ser para o lado direito (depois) da primeira 
planilha da pasta de trabalho BDTesteTxt.
Move a planilha ativa da workbook.
Desabilita os avisos do sistema.
77
Importando dados de um arquivo TXT 5
5.4. Atribuindo a rotina a um controle 
de formulário
Para finalizar, devemos inserir um controle de formulário na primeira planilha 
e atribuir a rotina a esse controle. Assim, quando o usuário desejar importar o 
arquivo .txt, bastará clicar sobre o botão de controle. Vejamos as instruções a 
seguir:
1. Na guia Desenvolvedor, grupo Controles, clique no botão Inserir e escolha 
a ferramenta botão na área de Controles de Formulário, conforme a imagem 
adiante:
 
2. Clique em algum lugar da planilha para inserir o botão. Depois, clique no 
nome da macro que o botão deverá executar (Import_Arq_Texto) e depois em 
OK;
 
78
Excel VBA - Módulo II
3. Utilize as alças de redimensionamento para alterar o tamanho do botão;
 
4. Selecione o texto do botão enquanto este apresentar as alças de 
redimensionamento;
 
5. Digite o novo texto e, em seguida, clique em qualquer célula da planilha para 
sair do modo edição e torná-lo funcional.
 
79
Importando dados de um arquivo TXT 5
Após esse procedimento, o arquivo .txt poderá ser importado, bastando para 
isso um clique simples sobre o botão da planilha. O resultado deve ser o seguinte:
80
Excel VBA - Módulo II
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita 
atenção, pois representam os pontos mais importantes do capítulo.
 • Em muitas situações, o usuário poderá receber dados diretamente de uma 
base SQL, Oracle ou outra base, sem a necessidade de filtrá-los no Access. 
Nestes casos, o administrador da base de dados criará as consultas para 
selecionar os dados necessários na base e exportá-los para um arquivo .txt;
 • Para preparar o ambiente, após salvar o arquivo .txt no endereço 
recomendado, devemos alternar para o VBE e inserir um novo módulo. 
Neste módulo, serão inseridas diversas variáveis. Entre elas, a variável App, 
que receberá o objeto Application;
 • Após configurar a pasta de trabalho, a próxima instrução da rotina deve abrir 
o arquivo .txt e transformá-lo em uma nova planilha na pasta de trabalho 
ativa. É o comando OpenText que informa que o arquivo aberto será tipo 
texto;
 • Quando inserimos um controle de formulário na primeira planilha e 
atribuímos a rotina a esse controle, o usuário pode importar o arquivo .txt, 
somente clicando sobre o botão de controle.
5
Importando dados 
de um arquivo TXT
 Mãos à obra!
82
Excel VBA - Módulo II
Confira o resultado no arquivo Cap4 –ExercicioOrdersLab.
xlsm que acompanha este material. Os arquivos TabMedic.txt e 
Customers.txt também estão disponíveis para o exercício no Kit 
Apostila.
Laboratório 1
Neste laboratório, vamos construir um sistema para importar os dados do 
arquivo indicado na tabela, conforme demonstrado na imagem. É importante 
considerar as instruções adiante:
 
 • A planilha deverá estar protegida; 
 • O usuário poderá selecionar apenas as células B2 e B3;
 • Aoclicar sobre o botão Importar TXT, o sistema importará os dados do 
arquivo .txtda célula selecionada para a segunda planilha. 
6
 9 Preparando o ambiente;
 9 Construindo a rotina.
Importando dados 
de um arquivo XLS
84
Excel VBA - Módulo II
6.1. Introdução 
A partir da versão 2007, uma planilha do Excel passou a ter 1.048.576 linhas por 
16.384 colunas. Com espaço maior para armazenar registros, utilizar um arquivo 
Excel como banco de dados se tornou tarefa comum em algumas empresas. 
Porém, para utilizá-lo dessa forma, vale considerar algumas recomendações.
Primeiro, ao armazenar os dados, estes devem ser apenas registrados na 
planilha; não há a necessidade de formatá-los. Isso porque o usuário analisará 
esses dados em sua planilha principal, provavelmente, em formulários VBA ou 
outro recurso, os quais tem sua própria formatação. Formatar os dados da base, 
além de ser tarefa desnecessária, torna o arquivo mais pesado, principalmente, 
se a tabela tiver muitos registros.
Segundo, a planilha base de dados poderá ser instalada em uma pasta da rede 
onde todos possam acessá-la e não conterá nenhuma fórmula ou funções. 
Novamente, essa tarefa ficará a cargo da pasta de trabalho do usuário que 
efetuará a consulta.
Concluindo, a pasta de trabalho banco de dados abrigará apenas dados sem 
quaisquer formatações, fórmulas ou funções.
6.2. Preparando o ambiente
O arquivo que utilizaremos neste capítulo é uma tabela de vendas de 
medicamentos de uma fictícia indústria farmacêutica e deve estar instalado 
em uma pasta. Nesse mesmo local, criaremos uma nova pasta de trabalho, 
denominada BDTesteXLS, contendo apenas uma planilha.
Após salvar o arquivo no endereço recomendado, devemos alternar para o VBE 
e inserir um novo módulo. Para importar os dados da planilha, vamos utilizar 
recursos de DAO, portanto, antes de iniciarmos a rotina, temos de fazer a 
referência a esse objeto no VBA, como fizemos nos capítulos anteriores, até 
chegar na janela Referências, demonstrada a seguir:
85
Importando dados de um arquivo XLS 6
Após determinar a referência e inserir um módulo, devemos iniciar a rotina 
RecallBD e criar as variáveis, conforme demonstrado na instrução a seguir:
 
Em que:
 • A variável MeuBD receberá o objeto Database;
 • A variável MinhaTabela receberá o objeto Recordset para recuperar os 
dados do arquivo .xls;
Selecionar a referência Microsoft 
DAO 3.6 e clicar no botão OK.
86
Excel VBA - Módulo II
 • A variável Ssql receberá a string SQL que conterá as instruções de recuperação 
dos dados do arquivo .xls;
 • A variável ThisPath receberá o caminho da pasta em que está o arquivo 
.xls. Esta variável será concatenada com a variável do nome do arquivo .xls 
para formar o caminho completo do arquivo;
 • A variável MeuArq receberá o nome do arquivo .xls. Ela será concatenada 
com a variável que agrega o endereço do arquivo para compor o comando 
que abrirá o arquivo .xls.
6.3. Construindo a Rotina
Após definir as variáveis, devemos alimentar, inicialmente, as variáveis de 
endereço ThisPath e MeuArq, conforme demonstrado na instrução a seguir:Após alimentar as variáveis de endereço, devemos definir a variável MeuBD, 
informando o banco de dados a ser aberto. Nesse caso, utilizaremos a pasta de 
trabalho Medicamentos.xls que acompanha este material.
 O próximo passo será criar a string SQL que informará quais dados iremos 
recuperar da tabela de medicamentos. Neste exercício, vamos recuperar a tabela 
inteira. Portanto, a instrução SQL que iremos inserir na variável será a seguinte:
SELECT * FROM [Dados$] WHERE MEDICAMENTO is Not Null
Vejamos a instrução completa a seguir:
 
87
Importando dados de um arquivo XLS 6
Vale ressaltar que iniciamos a alimentação da variável que receberá a instrução 
SQL com a variável Empty, a qual indica que nenhum valor inicial foi atribuído 
ainda. É uma forma de garantir que ela iniciará vazia, sem nenhum valor residual. 
Podemos observar também que, ao final de cada linha, é inserida a constante 
vbCr, a qual atribui uma quebra de parágrafo ou retorno de carro ao código. 
Esta constante equivale ao caractere chr(13) utilizado comumente para quebrar 
texto dentro de MsgBox.
Definida a variável Ssql, devemos definir agora a variável de objeto Recordset, 
informando a instrução SQL inserida na variável. A variável do objeto Recordset, 
denominada MinhaTabela, informará ao banco de dados quais valores deverão 
ser retornados.
Observemos as instruções adiante:
Para finalizar a rotina, devemos distribuir na planilha os dados capturados pela 
instrução Recordset. Estes dados serão inseridos a partir da segunda linha da 
planilha (célula A2). Antes de inseri-los, a rotina criará o cabeçalho da tabela, 
conforme a instrução a seguir:
 
Insere os dados a 
partir da célula A2.
Fecha a conexão com o 
banco de dados.
Apaga todos 
os registros 
da planilha 
ativa.
Ajusta 
automaticamente 
as colunas.
Cria o cabeçalho da tabela.
88
Excel VBA - Módulo II
Ao rodar a rotina, a planilha ativa, que estava em branco, receberá todos os 
dados da base .xls com um cabeçalho próprio criado pela rotina, conforme a 
imagem a seguir:
 
89
Importando dados de um arquivo XLS 6
Pontos principais
Atente para os tópicos a seguir. Eles devem ser estudados com muita 
atenção, pois representam os pontos mais importantes do capítulo.
 • O Excel poderá ser utilizado como banco de dados, principalmente após 
a versão 2007, na qual o número de linhas e de colunas foi expandido 
consideravelmente. Sendo assim, podemos utilizar rotina VBA para recuperar 
dados de bases .xls com o recurso DAO;
 • Para utilizar um arquivo Excel como banco de dados, entretanto, devemos 
considerar algumas recomendações: os dados devem ser apenas registrados 
na planilha; não há a necessidade de formatá-los e a planilha pode ser 
instalada em uma pasta da rede onde todos possam acessá-la e não conterá 
nenhuma fórmula ou funções;
 • Para preparar o ambiente, após salvar o arquivo no endereço recomendado, 
devemos alternar para o VBE e inserir um novo módulo. Para importar os 
dados da planilha, vamos utilizar recursos de DAO, portanto, antes de 
iniciarmos a rotina, devemos fazer a referência a este objeto no VBA.
6
Importando dados 
de um arquivo XLS
 Mãos à obra!
92
Excel VBA - Módulo II
Confira o resultado no arquivo Cap6 –Exercicio Medicamentos.
xlsm que acompanha este material. 
Laboratório 1
Neste laboratório, vamos construir um sistema para importar os dados do 
arquivo Medicamentos.xls, de acordo com as seguintes instruções:
1. Importe os dados somente dos campos MEDICAMENTO e QTDE;
2. Importe os registros em que a quantidade seja maior que 50.
7
 9 Preparando o gráfico;
 9 O formulário de controle;
 9 O formulário Gráfico.
Inserindo gráficos em 
formulários
94
Excel VBA - Módulo II
7.1. Introdução 
Imagens valem muito mais que mil palavras. Este é um ditado antigo e muito 
bem aplicado em apresentações. As massas de dados armazenadas em bancos 
de dados podem ser analisadas por meio de gráficos que as representem. Até 
o momento, tratamos de apresentação de massas de dados em planilhas ou 
formulários VBA, cujos dados foram importados de tabelas Access, Planilhas 
do Excel ou arquivos .txt. Neste capítulo, abordaremos a apresentação destes 
dados em formulários VBA através de gráficos.
A inserção de gráficos em formulários VBA é relativamente simples. Primeiro, 
devemos gerar um gráfico em uma planilha e, depois, criar uma rotina para 
exportá-lo no formato imagem (gif, jpeg, etc.). Em seguida, devemos importar 
esta imagem para um objeto imagem de um formulário.
7.2. Preparando o gráfico
Antes de escrever a rotina, devemos construir o gráfico que será apresentado 
no formulário. Para isso, abrir uma pasta de trabalho e inserir um gráfico de 
barras, como o da imagem a seguir:
O gráfico deverá ser instalado na primeira planilha e a tabela que o alimenta 
deverá ser instalada na mesma posição da ilustração, ou seja, a partir da célula 
A1.
95
Inserindo gráficos em formulários 7
7.3. O formulário de controle
Com o formulário montado na planilha, devemos abrir o editor de VBA (VBE) e 
inserir dois formulários: um receberá o gráfico da planilha e outro carregará os 
controles do gráfico.
 
O primeiro formulário que iremos criar será o de controle, o qual controlará a 
inserção de valores nos campos que alimentam o gráfico, além de carregar o 
formulário do gráfico. Vejamos as instruções a seguir:
Insira dois textboxes, dois 
rótulos, dois spinbuttons e 
dois commandbuttons.
96
Excel VBA - Módulo II
Nomear, posicionar e redimensionar os objetos, de modo que o formulário 
fique com a aparência a seguir:
ufm_Controlespb_VrSul
cmb_Grafico
tbx_VrSul tbx_VrNortel
spb_Vr|Norte
cmb_Sair
Aplique um duplo-clique sobre 
o objeto spinbutton.
 
Inserir esta rotina no evento Change do objeto:
97
Inserindo gráficos em formulários 7
Nas propriedades do spinbutton:
 
Na imagem anterior, a rotina construída no evento Change do spinbutton fará 
com que, ao clicar sobre qualquer das setas (para cima ou para baixo) desta 
ferramenta, o valor do spinbutton seja inserido no Textboxtbx_VrSul e na 
célula B1. Pelo fato de as propriedades Max, Min e SmallChange terem sido 
alteradas, a cada clique nas setas, o valor do spinbutton será alterado de dez 
em dez, sendo o mínimo dez e o máximo cem.
Nomear o formulário como ufm_Controle e abri-lo novamente:
Aplique um duplo-clique sobre 
o objeto spinbutton.
Altere a propriedade 
SmallChange para 10.
Altere a propriedade 
Max para 100.
Altere a propriedade 
Min para 10.
98
Excel VBA - Módulo II
Em seguida, inserir esta rotina no evento Change do objeto:
Nas propriedades do spinbutton:
 
Na ilustração anterior, a rotina construída no evento Change do spinbutton 
fará com que, ao clicar sobre qualquer das setas (para cima ou para baixo) 
desta ferramenta, o valor do spinbutton seja inserido no Textboxtbx_VrNorte 
e na célula B1. Assim como na rotina anterior, pelo fato de as propriedades 
Max, Min e SmallChange terem sido alteradas, a cada clique nas setas, o valor 
do spinbutton será alterado de dez em dez, considerando o valor mínimo de 
dez e máximo de cem.
Altere a propriedade 
SmallChange para 10.
Altere a propriedade 
Max para 100.
Altere a propriedade 
Min para 10.
99
Inserindo gráficos em formulários 7
Retorne ao formulário e aplique um duplo-clique sobre o botão Exibir Gráfico:
Em seguida, inserir esta rotina no evento Click do objeto cmb_Grafico:
A rotina inserida no evento Click do objeto cmb_Grafico desliga o formulário 
ufm_Controle e abre o formulário ufm_Chart.
Para finalizar, retornar para o formulário e atribuir o comando unloadme ao 
objeto cmb_Sair para que, ao clicar sobre este botão, o usuário possa fechar o 
formulário.
7.4. O formulário Gráfico
Este formulário é o objeto principal deste capítulo. Ele reproduzirá o gráfico que 
montamos na planilha e possuirá apenas dois objetos: um frame de imagem e 
um botão para fechá-lo. 
100
Excel VBA - Módulo II
1. Insira os objetos indicados no formulário:
2. Redimensione,

Outros materiais