Upload
iza-monteiro
View
38
Download
11
Embed Size (px)
DESCRIPTION
VBA - Acessando Um Banco de Dados MS Access No Excel 2007
Citation preview
20/06/2015 VBAAcessandoumbancodedadosMSAccessnoExcel2007
http://www.macoratti.net/12/10/vba_acc1.htm 1/4
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 destelink: 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.ConnectionWith conn .Provider = "Microsoft.JET.OLEDB.4.0" .ConnectionString = "Data Source=" & caminhoArquivoDados; .OpenEnd With
Na verso 2007 o mesmo trecho de cdigo, agora usando o novo provedor, ficaria assim :
Set conn = New ADODB.ConnectionWith conn .Provider = "Provider=Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & caminhoArquivoDados; .OpenEnd 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.xlsxData Source=c:\dados\BinaryExcel2007Arq.xlsbData 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 AccessVamos ento mostrar um exemplo prtico, acessando a tabela Employees do banco de dados Northwind.mdb que esta na pasta c:\dados, de comoacessar o Microsoft Access.
Obs: Para saber como criar o cdigo VBA descrito neste artigo leia os artigos :
VBA Preparando o ambienteVBA 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 Habilitadapara 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 VBEpara 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:\dadosindicada, 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:
20/06/2015 VBAAcessandoumbancodedadosMSAccessnoExcel2007
http://www.macoratti.net/12/10/vba_acc1.htm 2/4
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;
20/06/2015 VBAAcessandoumbancodedadosMSAccessnoExcel2007
http://www.macoratti.net/12/10/vba_acc1.htm 3/4
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 doscampos e na clula A3 os dados para o registro selecionado.
Pegue a planilha aqui: AcessoBancoDadosExcel.zip
Slm133:1Oh!quobomequosuavequeosirmosvivamemunio!Slm133:2comooleopreciososobreacabea,quedesceusobreabarba,abarbadeAro,quedesceusobreagoladassuasvestesSlm133:3comooorvalhodeHermom,quedescesobreosmontesdeSioporquealioSenhorordenouabno,avidaparasempre.
Referncias:
Seo VB .NET do Site Macoratti.net
20/06/2015 VBAAcessandoumbancodedadosMSAccessnoExcel2007
http://www.macoratti.net/12/10/vba_acc1.htm 4/4
Super DVD .NET A sua porta de entrada na plataforma .NETSuper DVD Vdeo Aulas Vdeo Aula sobre VB .NET, ASP .NET e C#Seo C# do site Macoratti.netSeo VBA do site Macoratti.netVBAVisualBasicforAplicationsMacoratti.netVBACadastrodeClientes(Excel)Macoratti.netVBAIntegrandoaplicativosOfficeMacoratti.netVBACadastrandoclienteseenviandoemailsMacoratti.netVBAAgendadeVisitas(Excel)Macoratti.net
JosCarlosMacoratti