public cn as adodb.connection
set cn = new adodb.conection
cn.open .....'abris la tabla que necesites
'ejecutas una conculta de insercion sobre la conexion y le 'ndicas el archivo y la hoja a la que va
cn.Execute "select registros.* into [Excel 5.0;database=datos.xls].nombrehoja from registros where...
el unico drama que tenes con esto es que no podes agregar en una hoja que exista y no podes agregar cuando esta el archivo abierto.
por lo demas funciona bien.
Otra opcion es hacer algo con objetos de automatizacion. yo me rompi la cabeza y no lo pude hacer andar. te mando lo que hice y si mi funciono pero en Visual foxrpo
local i,j,tmpsheet,xlapp,xlsheet,hoja2
dimension Mlist(1,1)
afields(mlist,'enc')
thisform.enabled=.f.
TmpSheet=GetObject('','Excel.Sheet')
XLApp=TmpSheet.Application
XLApp.visible=.T.
XLApp.workbooks.add()
XLSheet=XLApp.ActiveSheet
hoja2=XLApp.rr
for i=1 to alen(mlist,1)
XLSheet.Cells(1,i)=mlist(i,1)
XLSheet.Cells(1,i).font.bold=.T.
XLSheet.Cells(1,i).font.size="10"
XLSheet.Cells(1,i).font.name="Arial"
endfor
i=2
select enc
go top
for n=1 to reccount('enc')
for j=1 to alen(mlist,1)
if vartype(&mlist(j,1))='N'
if &mlist(j,1)=0
XLSheet.Cells(i,j)='-'
else
XLSheet.Cells(i,j)=&mlist(j,1)
endif
endif
if vartype(&mlist(j,1))='L'
if &mlist(j,1)=.t.
XLSheet.Cells(i,j)='si'
else
XLSheet.Cells(i,j)='no'
endif
endif
if vartype(&mlist(j,1))='C'
XLSheet.Cells(i,j)=&mlist(j,1)
endif
XLSheet.Cells(i,j).font.size="10"
XLSheet.Cells(i,j).font.name="Arial"
endfor
i=i+1
skip
endfor
J=''
XLSheet.Columns.EntireColumn.AutoFit
thisform.enabled=.t.
es medio complicado al principio pero cuando lo hiciste andar lo usas en todo.
leete en la ayuda lo de objetos de automatizacion y por ahi entendes algo mas.
un saludo