Экспорт набора записей в электронную таблицу
Просто схватить немного VBA (этот материал для меня новый, так что терпите нас!)
Из запросаContactDetails_SurveySoftOutcomesЯ пытаюсь сначала найти список всех уникальных значений вDEPTNAME поле в этом запросе, следовательно,rsGroup
Dim хранит сгруппированный запрос наDEPTNAME поле.
Затем я собираюсь использовать этот сгруппированный список как способ циклического повторения одного и того же запроса, но прохождения каждой уникальной записи в качестве фильтра для всего набора записей и экспорта каждого отфильтрованного набора записей в свою собственную электронную таблицу Excel ... см.Do While Not
петля.
Мой код срабатывает наDoCmd.TransferSpreadsheet
...rsExport
часть. Я немного новичок в этом, но я думаю, мое имя Дим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