TOP

使用 VBA Excel 进行 SQL 查询

描述

有多种方法可以将外部来源的数据放入工作表中 Excel 。在本文中,我们将了解如何从数据库文件中查询数据 MS Access 并从文件中 Excel 通过使用 SQL VBA 。是的,我们要把它混合一点 SQLVBA !而且它比您想象的要好!

SQL 代表 Structured Query Language (结构化查询语言)是一种用于从数据库检索信息的语言(例如 MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL 和别的)。

您还可以从互联网、文本文件或其他Excel或 CSV 文件。


1.从Excel VBA到文件MS Access的SQL查询

所以我们需要一个数据库连接(变量 varConn 在下面的宏中)和 SQL查询 (多变的 varSQL ) 自动从数据库中检索数据以用于报告。在下面的例子中有 SQL查询 ,它从 MS Access 中的小型数据库接收数据。

点击 加载数据库 MS Access (test.mdb)

MS Access 文件将如下所示:

让我们编写将执行的宏 SQL查询

打开菜单 服务-宏-编辑器Visual Basic , 插入新模块 (菜单 Insert - Module ) 并将宏文本复制到那里:

Sub SQLQuery_1()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

单击保存并返回Excel。从菜单中选择 查看 - 宏 (Alt+F8) 我们的宏的名称“ SQLQuery_1 ”。会出现一个对话框,点击它 数据库... ,查找我们的 Access 文件并单击 ОК

现在我们可以看到我们的宏查询已经拉出了列 Month , ProductCity 从表中 Sumproduct 从数据库中 test.mdb 到文件 Excel.

2.从VBA到关闭文件Excel的SQL查询

类似地,我们可以从常规 Excel 文件中获取数据,就像从数据库中一样。为此,我们的宏代码需要稍微重写,并且连接驱动程序从 Access 更改为 Excel。

我们导出表 Sumproduct 从 Access 中的 Excel 并保存文件。接下来,我们将修改后的代码插入到新模块中并运行宏:

Sub SQLQuery_2()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

将出现一个窗口,我们可以在其中选择 Excel 文件(应称为 Sumproduct.xlsx 或使用其他扩展名)。我们找到并选择它。让我们按一下 ОК ,我们得到的数据与 Access 文件中的数据相同。

有关该主题的文章: