【发布时间】:2017-04-21 22:13:49
【问题描述】:
我需要将大量复杂数据导出到 Excel 电子表格。为此,我创建了几个大型查询。现在我希望根据日期范围和其他一些信息来过滤这些查询,但我不确定该怎么做。
DoCmd.TransferSpreadsheet acExport, , "Overview_Agents_Query", xlsxPath, True, "Agents"
这就是我目前将查询导出到 Excel 电子表格的方式。在形成这些查询时,我没有意识到我无法传递 Recordset,只能传递 Table 或 Query 的字符串名称。我的第二次尝试看起来像:
StrAgents = "SELECT * FROM Overview_Agents_Query"
# Build a WHERE clause here
Set qdfAgents = CurrentDb.CreateQueryDef("Temp_Agents_Query", StrAgents)
DoCmd.TransferSpreadsheet acExport, , qdfAgents.Name, xlsxPath, True, "Agents"
CurrentDb.QueryDefs.Delete qdfAgents.Name
这适用于两个简单的查询,但由于使用了嵌套查询、联接和联合,因此对于一些更复杂的查询来说是不切实际的。我真的希望避免将大块 SQL 报告字符串直接硬编码到我的 VBA 代码中,尽管我认为如果没有解决方案存在总比没有好。
关于如何实现这一点的任何想法?
【问题讨论】:
-
研究使用
TempVars或公共函数将参数传递给查询。