我可以使用 SQL 从其他 Excel 文件构建 Excel 数据表吗?

NoC*_*sis 4 database microsoft-excel-2007 sql microsoft-excel

我对 SQL 非常了解,可以执行基本查询并操作拆分为数据库中多个表的数据。我更了解 Excel 2007,并经常使用它来管理我的机械工程项目。

有时在 Excel 中,我想操作来自多个电子表格的数据并将其合并到一个表中 - 这是一项非常适合 SQL 查询的任务。通常当我遇到这样的问题时,我的第一反应是开始在我的脑海中构建一个查询。不幸的是,很多时候 SQL 查询并不容易转换为 Excel 函数,这让我无法理解。

是否可以在 Excel 中为这些函数使用 SQL?

小智 5

您可以将 ADO 与 Excel VBA 结合使用。例如:

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
Run Code Online (Sandbox Code Playgroud)

查询可以使用 Jet SQL 中可接受的任何内容:

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

您会在https://stackoverflow.com/上找到更多内容,包括添加到 MS Access、SQL Server、MySQL 等。