This should not be too much of a problem unless you are generating a huge list. If you extracting more than 1 or 2 hundred rows, I would consider opening Access as an OLE object and have it generating the spreadsheet for you. <br><br>I've copied the following code from one of my existing projects. The project uses RDO to extract data from an Oracle data base. I've attempted to make the change to DAO on the fly, but it my not work on the first try. You may have to tweak it a little more. Remember, this code isn't tested so no guarantees. Hope it helps.<br><br> on error resume next<br> Dim objExc As Excel.Application<br> Dim n As Integer<br> Dim wrkJet As Workspace<br> Dim db As Database<br> dim rs as Recordset<br> dim sSql as string<br> dim i as integer <br> dim iCount as integer <br> Set wrkJet = CreateWorkspace("", "admin", "", dbUseODBC)<br>' You will need to set the ODBC-DSN in the following line<br> Set db = wrkJet.OpenDatabase(ODBC-DSN, dbDriverComplete, False, "ODBC;"

<br> Screen.MousePointer = vbHourglass<br>' Insert your select statement in sSql<br> Set rs = db.OpenRecordset(sSQL, dbOpenDynaset)<br> i = 0<br> iCount = 0<br> if err = 0 then<br> if rs.eof = false then<br> Set objExc = New Excel.Application<br> objExc.Workbooks.Add<br> objExc.Worksheets.Add<br> objExc.Visible = True<br> end if<br> do while (rs.eof = False)<br> if mod(iCount, 7) = 0 then<br>' Moving the focus of the cells over two columns<br> objExc.range("A1"

.select<br> objExc.ActiveCell.Offset(0, i).Select<br>' Build your column headings<br> for n = 0 to rs.fields.count - 1<br> objExc.ActiveCell.Offset(0, n).Value = rs.fields

.name<br> Next n<br> i = i + rs.fields.count<br> end if<br>' Advance to the next row<br> objExc.ActiveCell.Offset(1, 0).Select<br> for n = 0 to rs.fields.count - 1<br> objExc.ActiveCell.Offset(0, n).Value = rs.fields

.value<br> Next n<br> iCount = iCount + 1<br> rs.movenext<br> loop<br> end if<br> Screen.MousePointer = vbDefault<br>