This is the way that I have done it:
Public Sub exceltransfer()
Dim rs as new ADODB.Recordset
Dim Xcel as Object
Set Xcel = New Excel.Application
Dim Counter as Integer 'Counter for loop
Dim rows as Integer 'Counter for rows
rs.Open "InsertQueryName", CurrentProject.connection, _ adOpenStatic, adLockReadOnly
rs.MoveFirst
Counter = rs.RecordCount
rows = 1
Xcel.Workbooks.Open Application.CurrentProject.Path & "InsertNameofWorkbook"
'Loop through Recordset an insert into Excel
For X = 1 to Counter
Xcel.Application.Worksheets("Sheet1"

.Cells(rows, 1).Value = rs!Field1
Xcel.Application.Worksheets("Sheet1"

.Cells(rows, 2).Value = rs!Field2
Xcel.Application.Worksheets("Sheet1"

.Cells(rows, 3).Value = rs!Field3
Xcel.Application.Worksheets("Sheet1"

.Cells(rows, 4).Value = rs!Field4
'etc Just change Field1 and so on to your field names of _ your queries
rows = rows + 1
Next X
Set RS = nothing
End Sub
Remember to update your References to include Excel and ADO and change the above Field references and connection string to your situation
Hope it works!