Exportando Recordset para planilha
Apenas começando a entender alguns VBA (este material é novo para mim, então fique com a gente!)
Da consultaContactDetails_SurveySoftOutcomes, Estou tentando primeiro encontrar uma lista de todos os valores exclusivos noDeptName campo nessa consulta, daí arsGroup
Dim armazenando uma consulta agrupada noDeptName campo.
Em seguida, usarei essa lista agrupada para percorrer a mesma consulta novamente, mas passando por cada entrada exclusiva como um filtro em todo o conjunto de registros e exportando cada conjunto de registros filtrado para sua própria planilha do Excel ... veja oDo While Not
loop.
Meu código está tropeçando noDoCmd.TransferSpreadsheet
...rsExport
parte. Eu sou um pouco novo nisso, mas eu acho que meu nome DimrsExport
para o conjunto de registros não é aceito neste método ..?
Existe uma solução fácil para o código que já iniciei ou devo usar uma abordagem completamente diferente para conseguir tudo isso?
Código:
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
Código Fixo:
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