Proprio alle prese qualche VBA (di nuovo per me questa roba modo da portare con noi!)Esportazione Recordset in foglio di calcolo
da Query ContactDetails_SurveySoftOutcomes, sto cercando di trovare prima un elenco di tutti i valori unici il campo DeptName in quella query, da cui la dimensione rsGroup
che memorizza una query raggruppata nel campo-NomeDistribuzione .
Ho quindi intenzione di utilizzare questo elenco raggruppato come modo di scorrere nuovamente la stessa query, ma passando attraverso ogni voce univoca come filtro sull'intero recordset ed esportare ogni recordset filtrato sul proprio foglio di calcolo Excel ... vedere il ciclo Do While Not
.
Il mio codice sta scattando sulla parte DoCmd.TransferSpreadsheet
... rsExport
. Sono un po 'nuovo a questo, ma suppongo che il mio nome Dim rsExport
per il recordset non sia accettato in questo metodo ..?
C'è una soluzione facile al codice che ho già avviato o dovrei usare un approccio completamente diverso per ottenere tutto questo?
Codice:
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
Fisso Codice:
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
Sta dicendo che ** Il motore di database Microsoft Access non riusciva a trovare l'oggetto ** e poi inserisce la stringa SQL nel messaggio di errore come se fosse il nome del mio oggetto ... ho perso un passaggio? –
prova la soluzione modificata. – Chris
Sì, ha funzionato. Grazie mille. –