PROCEDURE excel_sumacolumn
*-----------------------------------------------------------
*!* toSheet: Objeto Sheet de Microsoft Excel®
*!* tnColum_Number: Número de columna donde se quiere sumar
*!* tnRow_First: Primer fila de la suma
*!* tnRow_last: Fila donde va la fórmula suma
*!* tcFontName: Nombre de la Fuente
*!* tnFontSize: Tamaño de la Fuente
*-----------------------------------------------------------
*!* Utiliza la función excel_columnNumber_to_letter()
*!* para determinar la letra de la columna
*-----------------------------------------------------------
LPARAMETERS toSheet,;
tnColumn_Number,;
tnRow_First,;
tnRow_last,;
tcFontName,;
tnFontSize
LOCAL lcLetra,;
lcFuncion
tcFontName = EVL(m.tcFontName,"Arial")
tnFontSize = EVL(m.tnFontSize,8)
* Determina la letra de la columna tnColumn_Number
lcLetra = excel_columnNumber_to_letter(m.tnColumn_Number)
* Escribe la función suma:
lcFuncion="=Sum"+CHR(40) ;
+ m.lcLetra+TRANSFORM(m.tnRow_First)+":";
+ m.lcLetra+TRANSFORM(m.tnRow_Last-1);
+ CHR(41)
with toSheet.Cells(m.tnRow_Last,m.tnColumn_Number)
.VALUE = m.lcFuncion
.FONT.NAME = tcFontName
.FONT.SIZE = tnFontSize
* .FONT.BOLD=.T.
ENDWITH
toSheet = null
ENDPROC
PROCEDURE excel_columnNumber_to_letter
*---------------------------------------------------------
* Name: excel_ColumnNumber_to_Letter
* Microsoft Excel ®
* Transforma un número de columna en su valor alfabético
* RETORNA: Caracter
* --------------------------------------------------------
* Parameter tnColumn
* Mínimo: 1 "A"
* Máximo: 16384 ( 2 ^^ 14) "XFD"
*---------------------------------------------------------
LPARAMETERS tnColumn
LOCAL lcChr,;
lcString,;
lnModif,;
lnResto,;
LOEX AS Exception
lcString=''
lnModif = 0
IF BETWEEN(m.tnColumn,1,16384)
DO WHILE m.tnColumn > 0
lnModif = 0
lnResto = MOD(m.tnColumn,26)
IF EMPTY(m.lnResto)
lnREsto = 26
lnModif = -1
ENDIF
tnColumn = INT(m.tnColumn / 26) + m.lnModif
lcChr = CHR(m.lnResto + 64)
lcString = m.lcChr + m.lcString
ENDDO
ENDIF
RETURN m.lcString
ENDPROC