Te mando un código donde se controlan errores LOCAL cErrores, lExcel * BUSCO UNA SESION DE EXCEL YA ACTIVA: cErrores = ON("ERROR") ON ERROR lExcel = .F. oExcel = GetObject(,"excel.application") ON ERROR &cErrores IF TYPE("oExcel") # 'O' * NO ESTABA ACTIVA. PREPARO UNA NUEVA SESION DE EXCEL: oExcel = CREATEOBJECT("Excel.Application") ENDIF oExcel.VISIBLE = .T. && VISUALIZO EXCEL oExcel.Workbooks.ADD && PREPARO UN NUEVO TRABAJO DE EXCEL SELE (THISFORM.GRID1.RECORDSOURCE) GO TOP nRows = 0 * EMPIEZO A CARGAR LA HOJA DE EXCEL LEYENDO LA ESTRUCTURA DEL GRID: WITH THISFORM.GRID1 SCAN nRows = nRows + 1 FOR nColumn = 1 TO .COLUMNCOUNT oExcel.Cells(nRows,nColumn) = EVAL(.COLUMNS(nColumn).CONTROLSOURCE) NEXT nColumn ENDSCAN Endwith