* Generar un cursor para pasar a Microsoft Excel por Automatización
SELECT nombre,idclien,cuit,calle,numero,ciudad,provincia ;
FROM clientes ;
WHERE !EMPTY(idclien) ;
ORDER BY nombre ;
INTO CURSOR curClien READWRITE
Export_Excel("curClien")
PROCEDURE export_excel
*---------------------
LPARAMETERS tcCursor
LOCAL loExcel as Object,;
loSheet as Object,;
loBook as Object,;
lnItem,;
lnRow,;
lnCol,;
lnFields,;
lcField,;
lcType,;
lxValor,;
lxDefault,;
lnPasos,;
loExCreate as Exception,;
loExGen as Exception
lnRow = 0
lnCol = 0
lnPasos = 0
lnFields = AFIELDS(laFields,m.tcCursor)
TRY
loExcel = NEWOBJECT("Excel.Application")
CATCH TO loexCreate
loExCreate.UserValue = PROGRAM()
MESSAGEBOX("No tiene la aplicación Microsoft Excel ® instalada")
FINALLY
ENDTRY
IF VARTYPE(loExCreate) # "O"
TRY
loBook = loExcel.workbooks.ADD()
loSheet = loExcel.ActiveSheet
SELECT (m.tcCursor)
SCAN
lnRow = m.lnRow + 1
lnCol = 0
FOR lnItem = 1 TO m.lnfields
lxValor = EVALUATE(FIELD(m.lnItem,m.tcCursor))
lcType = VARTYPE(m.lxValor)
lxDefault = ICASE(m.lcType="N",0,;
m.lcType="C","",;
m.lcType="L",".f.",;
m.lcType="D",null,;
m.lctype="T",null,;
"")
IF m.lcType = "L"
lxValor = TRANSFORM(m.lxValor)
ELSE
IF EMPTY(m.lxvalor)
lxValor = m.lxDefault
ENDIF
ENDIF
lnCol = m.lnCol + 1
loSheet.Cells(m.lnRow,m.lnCol).Value = m.lxValor
ENDFOR
lnPasos = m.lnPasos + 1
IF lnPasos > 99
WAIT WINDOW TRANSFORM(m.lnRow)+" Registros Transferidos..." AT 15,20 NOWAIT
lnPasos = 0
ENDIF
ENDSCAN
loSheet.COLUMNS.AUTOFIT
CATCH TO loexGen
loExGen.UserValue = PROGRAM()
ShowError(loexGen)
FINALLY
WAIT CLEAR
loExcel.Visible = .t.
loSheet = null
loBook = null
loExcel = null
USE IN SELECT(m.tcCursor)
ENDTRY
ENDIF
ENDPROC