【发布时间】:2013-04-26 12:08:55
【问题描述】:
刚刚开始掌握一些 VBA(这些东西对我来说是新的,所以请耐心等待!)
从查询 ContactDetails_SurveySoftOutcomes 中,我试图首先在该查询的 DeptName 字段中找到所有唯一值的列表,因此 rsGroup Dim 存储DeptName 字段上的分组查询。
然后,我将使用此分组列表作为再次循环执行相同查询的方式,但将每个唯一条目作为整个记录集的过滤器传递,并将每个过滤后的记录集导出到其自己的 Excel 电子表格...参见Do While Not 循环。
我的代码在DoCmd.TransferSpreadsheet ... rsExport 部分出错。我对此有点陌生,但我猜我的记录集的 Dim 名称 rsExport 在此方法中不被接受..?
是否可以轻松修复我已经开始的代码,或者我应该使用完全不同的方法来实现这一切?
代码:
Public Sub ExportSoftOutcomes()
Dim rsGroup As DAO.Recordset
Dim Dept As String
Dim myPath As String
myPath = "C:\MyFolder\"
Set rsGroup = CurrentDb.OpenRecordset("SELECT ContactDetails_SurveySoftOutcomes.DeptName " _
& "FROM ContactDetails_SurveySoftOutcomes GROUP BY ContactDetails_SurveySoftOutcomes.DeptName", dbOpenDynaset)
Do While Not rsGroup.EOF
Dept = rsGroup!DeptName
Dim rsExport As DAO.Recordset
Set rsExport = CurrentDb.OpenRecordset("SELECT * FROM ContactDetails_SurveySoftOutcomes " _
& "WHERE (((ContactDetails_SurveySoftOutcomes.DeptName)='" & Dept & "'))", dbOpenDynaset)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, rsExport, myPath & Dept & "\" & Dept & " - Soft Outcomes Survey.xls", True
rsGroup.MoveNext
Loop
End Sub
固定代码:
Public Sub ExportSoftOutcomes()
Dim rsGroup As DAO.Recordset
Dim Dept As String
Dim myPath As String
myPath = "C:\MyFolder\"
Set rsGroup = CurrentDb.OpenRecordset("SELECT ContactDetails_SurveySoftOutcomes.DeptName " _
& "FROM ContactDetails_SurveySoftOutcomes GROUP BY ContactDetails_SurveySoftOutcomes.DeptName", dbOpenDynaset)
Do While Not rsGroup.EOF
Dept = rsGroup!DeptName
Dim rsExportSQL As String
rsExportSQL = "SELECT * FROM ContactDetails_SurveySoftOutcomes " _
& "WHERE (((ContactDetails_SurveySoftOutcomes.DeptName)='" & Dept & "'))"
Dim rsExport As DAO.QueryDef
Set rsExport = CurrentDb.CreateQueryDef("myExportQueryDef", rsExportSQL)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "myExportQueryDef", myPath & Dept & "\" & Dept & " - Soft Outcomes Survey.xls", True
CurrentDb.QueryDefs.Delete rsExport.Name
rsGroup.MoveNext
Loop
End Sub
【问题讨论】:
标签: ms-access ms-access-2007 vba ms-access-2010