Posso usar o SQL para criar uma tabela de dados do Excel a partir de outros arquivos do Excel?

3

Conheço bem o SQL para executar consultas básicas e manipular dados divididos em várias tabelas em um banco de dados. Conheço o Excel 2007 um pouco melhor e uso-o frequentemente para gerenciar meus projetos de engenharia mecânica.

Às vezes, no Excel, quero manipular dados de várias planilhas e combiná-los em uma única tabela - uma tarefa adequada para uma consulta SQL. Normalmente, quando encontro problemas como esse, minha reação imediata é começar a fazer uma consulta na minha cabeça. Infelizmente, muitas vezes, as consultas SQL não são facilmente traduzidas para as funções do Excel e isso me impede nas minhas faixas.

É possível utilizar o SQL para essas funções no Excel?

    
por NoCatharsis 22.11.2010 / 20:23

2 respostas

4

Você pode usar o ADO com o Excel VBA. Por exemplo:

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset 

''This is just a convenient name to test, it would probably be
''better to use the full file name eg C:\Docs\XL.xls
strFile = Workbooks(1).FullName

''For ACE see: http://www.connectionstrings.com/excel-2007
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

''Pick one:
strSQL = "SELECT * FROM DataTable" ''Named range
strSQL = "SELECT * FROM [Sheet1$A1:E346]" ''Range
strSQL = "SELECT * FROM [Sheet1$]" ''All the data in a sheet
strSQL = "SELECT * FROM [Excel 8.0;HDR=YES;IMEX=1;" _
       & "database=C:\Docs\LTD.xls].[Sheet1$]" ''Refer to second workbook

rs.Open strSQL, cn

''Write a recordset to a sheet
Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs

A consulta pode usar qualquer coisa aceitável no Jet SQL:

Fundamental Microsoft Jet SQL for Access 2000
Intermediate Microsoft Jet SQL for Access 2000
Advanced Microsoft Jet SQL for Access 2000

Você encontrará um pouco mais sobre: link , incluindo a adição ao MS Access, SQL Server, MySQL e assim por diante .

    
por 23.11.2010 / 01:57
1

Seu caso é exatamente como eu tive alguns meses atrás. Eu também tento construir consulta SQL na minha cabeça toda vez que eu preciso fazer alguma manipulação com dados no Excel. Então, eu criei um pequeno Add-In chamado Consultas SQL do XLTools . Agora eu publiquei em nosso site para outras pessoas como você e eu!

Permite criar qualquer consulta SQL em tabelas em pastas de trabalho do Excel usando o editor de SQL incorporado e executá-lo imediatamente com a opção de colocar o resultado em uma nova ou qualquer planilha existente.

É muito mais fácil de usar se você precisar apenas criar e executar uma consulta SQL - sem VBA, sem manipulações complexas com o MS Query ...

Aqui está um exemplo:

    
por 04.07.2014 / 23:32