VBA - Excel : Acessando dados com ADO (Copiando dados do Access p/o Excel)
Geralmente recebo emails com dúvidas em como acessar dados com aplicativos Office como Word , Excel , PowerPoint , etc. |
Eu sempre prometo que irei colocar um artigo sobre o assunto no site , e hoje estou cumprindo o prometido.
Quero deixar claro que não pretendo abordar este assunto em futuros artigos pois , embora o VBA esteja intimamente relacionado com o Visual Basic e a integração com os aplicativos Office seja uma questão muito importante , simplesmente eu não teria tempo para tratar de tantos assuntos relacionados.
Então quero reiterar que o foco é Visual Basic , VB.NET e ASP e ASP.NET.
Você pode usar código Visual Basic em seus aplicativo office para automatizar tarefas e dar maior produtividade a seus arquivos .doc e suas planilhas eletrônicas.
Neste artigo eu vou mostrar como você pode acessar uma base de dados Access e preencher uma planilha Excel com os dados obtidos usando o editor Visual Basic do Excel.
Os artigos já publicados no site sobre VBA podem lhe ajudar a ter uma visão geral do assunto:
Vamos acessar o banco de dados Northwind.mdb e obter informações que serão exibidas na planilha Excel. Eu criei uma consulta que retorna o valor total de compras e a quantidade realizada por cada cliente. O código SQL é o seguinte :
SELECT Orders.CustomerID, Sum([Order Details].UnitPrice) AS ValorTotal, Sum([Order Details].Quantity) AS QuantidadeTotal
FROM (Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID
GROUP BY Orders.CustomerID
ORDER BY Orders.CustomerID;
Abra o o Excel (eu estou usando o Excel do Office 97) e no menu Ferramentas selecione Macro | Editor Visual Basic
No menu Ferramentas do Editor selecione a opção referências e inclua a biblioteca de acesso a dados ADO no projeto. Sem isto não teremos acesso aos objetos de acesso a dados.
No menu Inserir do Editor selecione User Form para incluir um novo formulário no seu projeto.
Na caixa de ferramentas insira um objeto Botão de comando e um objeto Imagem no formulário.(No controle Imagem eu inclui o logo do site)
Os nomes usados no projeto são:
Clique duas vezes sobre o botão de comando para poder inserir o código VBA que irá conectar com o banco de dados e extrair as informações para o Excel.
O seu ambiente de trabalho deverá estar parecido com o da figura abaixo.
Agora inclua o seguinte código no evento Click do botão de comando:
Private Sub cmdConexaoBD_Click() Dim sql As String Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim i As Integer 'define a conexão com o banco de dados Northwind.mdb Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/teste/Northwind.mdb" cn.Open 'define um novo objeto recordset Set rs = New ADODB.Recordset 'define a instrução sql sql = "SELECT Orders.CustomerID, Sum([Order Details].UnitPrice) AS ValorTotal, Sum([Order Details].Quantity) AS QuantidadeTotal" sql = sql & " FROM (Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) sql = sql & " INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID" sql = sql & " GROUP BY Orders.CustomerID" sql = sql & " ORDER BY Orders.CustomerID" 'gera o recordset para o sql sobre a conexao definida rs.Open sql, cn 'define o cabeçalho das células no excel Range("A1").Value = "Codigo do Cliente" Range("B1").Value = "Quantidade Total" Range("C1").Value = "Valor total dos Pedidos" i = 2 If Not rs.EOF Then Do While Not rs.EOF Range("A" & i).Value = rs(0) Range("B" & i).Value = rs(2) Range("C" & i).Value = rs(1) rs.MoveNext i = i + 1 Loop End If cn.Close End Sub
|
O código é muito simples ; geramos um objeto recordset via instrução SQL e preenchemos a planilha Excel.
Ao executar o projeto o formulário irá abrir e quando o usuário clicar no botão de comando teremos o resultado exibido na figura abaixo:
Pronto , você acabou de criar um formulário com código ADO que acessa um banco de dados e preenche uma planilha EXCEL ; tudo isto feito no próprio EXCEL com o editor Visual Basic.
Como VBA no Excel e sua competência e imaginação , o céu é o limite...
Eu sei é apenas VBA , mas eu gosto ....
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET