Hola. aquí presento una de las forma mas fácil de exportar registro de una grilla a Excel
Local cErrores, lExcel,oExcel
* BUSCO UNA SESION DE EXCEL YA ACTIVA:
thisform.export.Visible = .t.
cErrores = On("ERROR"
On Error lExcel = .F.
oExcel = Getobject(,"excel.application"
On Error &cErrores
oExcel = Createobject("Excel.Application"
*!* IF TYPE("0Excel"
*!* * NO ESTABA ACTIVA. PREPARO UNA NUEVA SESION DE EXCEL:
*!* oExcel = CREATEOBJECT("Excel.Application"
*!* ENDIF
oExcel.Workbooks.Add && PREPARO UN NUEVO TRABAJO DE EXCEL
Sele (Thisform.LISt1.RecordSource) && El objeto en la grilla
Go Top
nRows = 1
* EMPIEZO A CARGAR LA HOJA DE EXCEL LEYENDO LA ESTRUCTURA DEL GRID:
*Los títulos de las columnas de excel
oExcel.Cells(nRows,1) = "CODIGO"
oExcel.Cells(nRows,2) = "COD DE BARRA"
oExcel.Cells(nRows,3) = "ARTICULO"
oExcel.Cells(nRows,4) = "PRECIO DE COMPRA"
oExcel.Cells(nRows,5) = "PRECIO DE PROD."
oExcel.Cells(nRows,6) = "PRECIO DE VENTA"
With Thisform.LISt1
Scan
nRows = nRows + 1
For nColumn = 1 To 6
oExcel.Cells(nRows,nColumn) = Eval(.Columns(nColumn+2).ControlSource)
Next nColumn
Endscan
ENDWITH
thisform.export.Visible = .f.
oExcel.Visible = .T. && VISUALIZO EXCEL
Local cErrores, lExcel,oExcel
* BUSCO UNA SESION DE EXCEL YA ACTIVA:
thisform.export.Visible = .t.
cErrores = On("ERROR"

On Error lExcel = .F.
oExcel = Getobject(,"excel.application"

On Error &cErrores
oExcel = Createobject("Excel.Application"

*!* IF TYPE("0Excel"

*!* * NO ESTABA ACTIVA. PREPARO UNA NUEVA SESION DE EXCEL:
*!* oExcel = CREATEOBJECT("Excel.Application"

*!* ENDIF
oExcel.Workbooks.Add && PREPARO UN NUEVO TRABAJO DE EXCEL
Sele (Thisform.LISt1.RecordSource) && El objeto en la grilla
Go Top
nRows = 1
* EMPIEZO A CARGAR LA HOJA DE EXCEL LEYENDO LA ESTRUCTURA DEL GRID:
*Los títulos de las columnas de excel
oExcel.Cells(nRows,1) = "CODIGO"
oExcel.Cells(nRows,2) = "COD DE BARRA"
oExcel.Cells(nRows,3) = "ARTICULO"
oExcel.Cells(nRows,4) = "PRECIO DE COMPRA"
oExcel.Cells(nRows,5) = "PRECIO DE PROD."
oExcel.Cells(nRows,6) = "PRECIO DE VENTA"
With Thisform.LISt1
Scan
nRows = nRows + 1
For nColumn = 1 To 6
oExcel.Cells(nRows,nColumn) = Eval(.Columns(nColumn+2).ControlSource)
Next nColumn
Endscan
ENDWITH
thisform.export.Visible = .f.
oExcel.Visible = .T. && VISUALIZO EXCEL