Экспорт набора записей в электронную таблицу

Просто схватить немного 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

Ответы на вопрос(3)

Ваш ответ на вопрос