You are on page 1of 4

20/06/2015

VBAAcessandoumbancodedadosMSAccessnoExcel2007

VBA Acessando um banco de dados MS Access no Excel 2007


Neste artigo vou mostrar como acessar um banco de dados Microsoft Access usando a tecnologia ADO no Excel 2007 via VBA.
A partir da verso 2007 houve alteraes na forma de acessar um banco de dados MS Access com os aplicativos Office.
A primeira coisa que voc deve fazer baixar e instalar o novo provedor de acesso a dados que dever ser usado no lugar do Jet a partir deste
link: 2007 Office System Driver: Data Connectivity Components
Nas verses anteriores utilizavase o Microsoft Jet e a string de conexo usada pode ser vista no trecho de cdigo abaixo:
Set conn = New ADODB.Connection
With conn
.Provider = "Microsoft.JET.OLEDB.4.0"
.ConnectionString = "Data Source=" & caminhoArquivoDados;
.Open
End With
Na verso 2007 o mesmo trecho de cdigo, agora usando o novo provedor, ficaria assim :
Set conn = New ADODB.Connection
With conn
.Provider = "Provider=Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & caminhoArquivoDados;
.Open
End With
Alm destas houve outras alteraes como:
Para abrir um arquivo excel Com linha de cabealho: Data Source =c:\ExcelArq.xlsx;HDR=yes;Format=xlsx;
Para abrir um arquivo excel Sem linha de cabealho: Data Source =c:\ExcelArq.xlsx;HDR=no;Format=xlsx;
Quanto aos tipos de arquivos excel 2007 temos as seguintes definies:
Data Source=c:\dados\Excel2007Arq.xlsx
Data Source=c:\dados\BinaryExcel2007Arq.xlsb
Data Source=c:\dados\Excel2007Arq.xlsm
O arquivo excel pode ser tratado como texto definindo o flag: IMEX=1 na final da string de conexo:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\dados\Excel2007Arq.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
Enfim, a mudana no foi to grande assim...

Acessando o Microsoft Access


Vamos ento mostrar um exemplo prtico, acessando a tabela Employees do banco de dados Northwind.mdb que esta na pasta c:\dados, de como
acessar o Microsoft Access.
Obs: Para saber como criar o cdigo VBA descrito neste artigo leia os artigos :

VBA Preparando o ambiente


VBA Criando um projeto no Excel
Abra o Excel 2007 e crie um novo projeto com o nome AcessoBancoDados (menu Salvar Como) selecionando o tipo : Pasta de Trabalho Habilitada
para Macro do Excel e clicando no boto Salvar;
A seguir pressione ALT+F11 para abrir o Editor Visual Basic (VBE);
Do VBE voc pode ir para o Excel clicando no boto Excel no topo/esquerdo de sua tela . Assim usando os dois botes voc pode navegar do VBE
para o Excel e, viceversa.
Vamos criar um procedimento que vai implementar a leitura da tabela Employees do banco dados Northind.mdb localizado na pasta c:\dados
indicada, sendo que o resultado ser exibido planilha atual da pasta de trabalho.
Inclua um mdulo no editor VBA. Para inserir um mdulo usando os menus do Visual Basic, selecione (no editor do VB) Inserir => Mdulo;
A seguir inclua o procedimento ConexaoDB e altere o nome do mdulo para ConexaoDB conforme abaixo:

http://www.macoratti.net/12/10/vba_acc1.htm

1/4

20/06/2015

VBAAcessandoumbancodedadosMSAccessnoExcel2007

Entendendo o cdigo usado:


Observe a string de conexo usada pelo Excel 2007: cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& strDbPath
Obs: A string de conexo para verses anteriores ao Excel 2007 esta comentada.
Definimos o comando SQL para acessar a tabela Employees e obter todos os registros para o funcionrio com cdigo igual a 9.
cmd.CommandText = "SELECT * FROM Employees Where EmployeeID = 9;"
Atribuimos o resultado obtido planilha atual a partir da clula A2:
Set qt = ActiveSheet.QueryTables.Add(Connection:=rs, Destination:=ActiveSheet.Range("A2"))
Na clula A1 informamos a instruo SQL usada : ActiveSheet.Range("A1") = qt.Recordset.Source
Agora vamos usar o procedimento criado de forma a executlo para que a tarefa seja concluda.

Como podemos fazer isso ?


Podemos criar um boto de comando na Planilha Excel e chamar o procedimento.
Clique na guia Desenvolvedor e a seguir no menu Inserir e selecione Boto;

http://www.macoratti.net/12/10/vba_acc1.htm

2/4

20/06/2015

VBAAcessandoumbancodedadosMSAccessnoExcel2007

A seguir clique na planilha e desenhe o boto conforme mostra a figura abaixo:


Aps isso selecione o boto e clique com o boto direito do mouse;
No menu suspenso clique em Editar Texto informando a seguir o texto: Acessar Dados;
Selecione novamente o boto e clique com o boto direito do mouse;
No menu suspenso clique em Atribui macro...;

Na janela Atribuir macro seleciona o procedimento que criamos no editor VBA: ConexaoDB e clique em OK;

Retorne a planilha Excel e clique no boto Acessar Dados para executar o cdigo:
Voc ver o resultado exibido, conforme mostra a figura abaixo, onde vemos na clula A1 a instruo SQL usada, na clula A2 os nomes dos
campos e na clula A3 os dados para o registro selecionado.

Pegue a planilha aqui:

AcessoBancoDadosExcel.zip

Slm133:1Oh!quobomequosuavequeosirmosvivamemunio!
Slm133:2comooleopreciososobreacabea,quedesceusobreabarba,abarbadeAro,quedesceusobreagoladassuas
vestes
Slm133:3comooorvalhodeHermom,quedescesobreosmontesdeSioporquealioSenhorordenouabno,avidapara
sempre.
Referncias:
Seo VB .NET do Site Macoratti.net
http://www.macoratti.net/12/10/vba_acc1.htm

3/4

20/06/2015

VBAAcessandoumbancodedadosMSAccessnoExcel2007

Super DVD .NET A sua porta de entrada na plataforma .NET


Super DVD Vdeo Aulas Vdeo Aula sobre VB .NET, ASP .NET e C#
Seo C# do site Macoratti.net
Seo VBA do site Macoratti.net
VBAVisualBasicforAplicationsMacoratti.net
VBACadastrodeClientes(Excel)Macoratti.net
VBAIntegrandoaplicativosOfficeMacoratti.net
VBACadastrandoclienteseenviandoemailsMacoratti.net
VBAAgendadeVisitas(Excel)Macoratti.net
JosCarlosMacoratti

http://www.macoratti.net/12/10/vba_acc1.htm

4/4