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 versão 2007 houve alterações 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 versões anteriores utilizava‐se o Microsoft Jet e a string de conexão usada pode ser vista no trecho de código abaixo: Set conn = New ADODB.Connection With conn .Provider = "Microsoft.JET.OLEDB.4.0" .ConnectionString = "Data Source=" & caminhoArquivoDados; .Open End With Na versão 2007 o mesmo trecho de código, 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 Além destas houve outras alterações como: ‐ Para abrir um arquivo excel Com linha de cabeçalho: Data Source =c:\ExcelArq.xlsx;HDR=yes;Format=xlsx; ‐ Para abrir um arquivo excel Sem linha de cabeçalho: Data Source =c:\ExcelArq.xlsx;HDR=no;Format=xlsx; Quanto aos tipos de arquivos excel 2007 temos as seguintes definições: 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 conexão: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\dados\Excel2007Arq.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1"; Enfim, a mudança não foi tão grande assim... Acessando o Microsoft Access Vamos então mostrar um exemplo prático, 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 código 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 botão Salvar; A seguir pressione ALT+F11 para abrir o Editor Visual Basic (VBE); Do VBE você pode ir para o Excel clicando no botão Excel no topo/esquerdo de sua tela . Assim usando os dois botões você pode navegar do VBE para o Excel e, vice‐versa. 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 módulo no editor VBA. Para inserir um módulo usando os menus do Visual Basic, selecione (no editor do VB) Inserir => Módulo; A seguir inclua o procedimento ConexaoDB e altere o nome do módulo para ConexaoDB conforme abaixo:

VBA - Acessando Um Banco de Dados MS Access No Excel 2007

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