La información está en el recordset. Excel es una base de datos, así que la podés manejar desde un recordset también, es cuestión de pasar los datos de uno a otro. Si el datagrid está enlazado a un control ADODC, llamado adoAccess, y la tabla de Excel a otro ADODC, llamado adoExcel, el código sería así:
Dim rdsA as Recordset, adoE as Recordset, k as long, j as long, n as long
set rdsA=adoAccess.Recordset
set rdsE=adoExcel.Recordset
With rdsA
if .RecordCount<1 then Goto Salida 'Si no hay registros sale
n=.Fields.Count - 1 'Obtiene cuantos campos tiene la tabla o
consulta
if n<1 then goto Salida 'No debería pasar, pero ...
'Llena el recordset
.MoveLast
.MoveFirst
For k=1 to .RecordCount 'Bucle que recorre la tabla
rdsE.AddNew 'Agrega un registro a Excel
For j=0 to n 'Para todos los campos de un recordset a otro
rdsE.Fields(j)=.Fields(j)
Next j
rdsE.Update ' Guarda los cambios
.MoveFirst 'Avanza un registro
Next k
End with
Salida:
set rdsA=Nothing
set rdsE=Nothing
Espero que te sirva
Saludos Ruri