TOP

使用 VBA Excel 进行 SQL 查询

描述

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

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 , Product 和 City 从表中 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 文件中的数据相同。

有关该主题的文章:

LO Calc 中的 YLC 实用程序菜单

LO Calc 中的 YLC 实用程序菜单

Excel 中的 YLC 实用程序菜单

Excel 中的 YLC 实用程序菜单