A veces puede ser cómodo utilizar VFP para calcular, extraer o preparar una vista, la cual puede ser visualizada utilizando un GRID. Pero no hay duda que una hoja de cálculo de Excel ofrece muchas mas posibilidades para elaborar, analizar y estudiar los datos preparados, o simplemente el usuario a veces sabe manejar bien Excel y prefiere usar esta herramienta.
VFP tiene una gran integración con estos sistemas y veremos lo fácil que es copiar el contenido de un GRID en una hoja de Excel.
Lo único que necesitamos es unas pocas líneas de código que podríamos poner, por ejemplo, en el evento click de un botón. Imaginando que el botón esté en el mismo formulario que el grid, el código será el siguiente:
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") * 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
Pablo Roca
Muy buena rutina.
ResponderBorrarHice una corrección que me daba error IF TYPE("oExcel") != "O"
Gracias
buen dia, muchas gracias. una consulta, como se haria para q copie los nombres de columnas, gracias
ResponderBorrar