在VBA循环中导出查询以基于字符串值选择数据
我有一个名为TEST的表,下面的代码基于列Territory中的唯一值循环导出查询 代码应该根据列区域中的唯一值将数据导出到excel文件。因此,每个Territory值都有自己的文件 设置sql查询以及如何使用字符串值选择数据时遇到问题:在VBA循环中导出查询以基于字符串值选择数据,vba,loops,ms-access,Vba,Loops,Ms Access,我有一个名为TEST的表,下面的代码基于列Territory中的唯一值循环导出查询 代码应该根据列区域中的唯一值将数据导出到excel文件。因此,每个Territory值都有自己的文件 设置sql查询以及如何使用字符串值选择数据时遇到问题: Sub TEST() Dim db As DAO.Database Dim rs1 As DAO.Recordset Dim v As String Set db = CurrentDb() Set rs1 = d
Sub TEST()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim v As String
Set db = CurrentDb()
Set rs1 = db.OpenRecordset("Select Distinct Territory From TEST")
Do While Not rs1.EOF
v = rs1.Fields(0).Value
**DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _
"WHAT SHOULD MY QUERY BE TO USE STRING v?", "C:\Users\me\Desktop\VBA_TEST\" v & ".xls", True**
rs1.MoveNext
Loop
rs1.Close
End Sub
有人可以指导我如何编写查询并连接字符串v,以便它循环输出报告吗
谢谢大家! 我认为您需要使用现有查询,而不仅仅是将查询作为TransferSpreadsheet方法的字符串。这意味着您需要一个临时查询对象来传输电子表格 您可以将变量添加到查询中,方法是将其连接到SQL字符串,确保对于文本字段,在每一侧都包含一个',而对于数字字段,则不使用它
Sub TEST()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim v As String
Set db = CurrentDb()
Set rs1 = db.OpenRecordset("Select Distinct Territory From TEST")
Dim strQry As String
Dim qdfTemp As DAO.QueryDef
Dim strQDF As String
strQDF = "_TempQuery_"
Do While Not rs1.EOF
v = rs1.Fields(0).Value
strQry = "SELECT * FROM TEST WHERE Territory = '" & v & "'"
Set qdfTemp = CurrentDb.CreateQueryDef(strQDF, strQry)
qdfTemp.Close
Set qdfTemp = Nothing
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _
strQDF, "C:\Users\me\Desktop\VBA_TEST\" & v & ".xls", True
CurrentDb.QueryDefs.Delete strQDF
rs1.MoveNext
Loop
rs1.Close
End Sub