有多种方法可以将外部来源的数据放入工作表中
您还可以从互联网、文本文件或其他Excel或
所以我们需要一个数据库连接(变量 varConn 在下面的宏中)和 SQL查询 (多变的 varSQL ) 自动从数据库中检索数据以用于报告。在下面的例子中有 SQL查询 ,它从 MS Access 中的小型数据库接收数据。
点击 加载数据库
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 文件并单击
现在我们可以看到我们的宏查询已经拉出了列
类似地,我们可以从常规 Excel 文件中获取数据,就像从数据库中一样。为此,我们的宏代码需要稍微重写,并且连接驱动程序从 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 文件(应称为