我需要从三个访问SQL查询导出到excel摘要统计信息,如下所示。这些是在vba中编程的:
strSQL2 = "SELECT * FROM qry_pp_prev2;"
strSQL3 = "SELECT * FROM qry_pp_prev3;"
strSQL4 = "SELECT * FROM qry_pp_prev4;"
'trying to merge the 3 queries above
Set db = CurrentDb()
Set rs = db.OpenRecordset(strSQL2)
Set rs1 = db.OpenRecordset(strSQL3)
Set rs2 = db.OpenRecordset(strSQL4)
'to create excel template
Set objXL = CreateObject("Excel.Application")
Set objWB = objXL.Workbooks.Add()
Set objWS = objWB.Worksheets("Sheet1")
With objWS
.cells(1, 1).Value = "X reporting tool"
.cells(2, 1).Value = "District"
.cells(2, 2).Value = Me!subd
.......
将所有查询放入一个文件访问权限的问题表明它太复杂,因此不提供输出。但是,当我使用上面的内容来合并SQL查询并让它们全部导出数据到从访问vba创建的模板中时,结果不准确。
目前,大多数模板中的结果都是空白的,excel模板的某些部分有一些值?
希望这有道理吗?
答案 0 :(得分:1)
不是答案,只是一个大评论
如果所有查询都返回相同数量的列,则可以轻松执行此操作:
strSQL_union = "SELECT * FROM qry_pp_prev2 UNION ALL"
strSQL_union = strSQL_union + " SELECT * FROM qry_pp_prev3 UNION ALL"
strSQL_union = strSQL_union + " SELECT * FROM qry_pp_prev4;"
你只会以一个结果集结束。
答案 1 :(得分:0)
好的,所以我知道您正在询问如何使用VBA执行此操作,但是有一个新的(ish)解决方案专门用于在没有VBA代码的情况下执行此操作。
对于Excel 2010和2013,它是一个名为“Power Query”的加载项。在Excel 2016中,它在数据菜单下本地集成为“获取和转换”。
使用此解决方案,您将浏览向导以定义3个连接,并描述如何将数据合并到一个表中。您可以使用DSN或通过向导创建连接等。
BAM,就是这样。
“Data Refresh All”将连接到3个数据源并将它们组合成一个表。
我假设您要附加数据。它做得很好。但是,如果您尝试加入表格,也可以支持。
我已经完成了你想用VBA做多年的事情,我对“Power Query”/“Get and Transform”可以做的事情感到震惊。我可以回去摆脱我的大部分代码。
以下是一些要查看的资料: