FoxPro/Visual FoxPro - Sumas en Excel desde Fox

 
Vista:

Sumas en Excel desde Fox

Publicado por Salvador Angeles (20 intervenciones) el 08/11/2010 16:23:16
Buenos dias, alguien me podria decir como hago una suma de un rango de celdas de Excel desde FoxPro ?

De antemano Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sumas en Excel desde Fox

Publicado por cesar (65 intervenciones) el 08/11/2010 17:14:00
Hola Salvador,
Te envio el codigo para que puedas hacer la suma de un rango de celdas de Excel.

&& Seleciono la Tabla
SELE sumatoria

&& Estas dos lineas las utilizo para determinar el numero de la ultima linea donde se va a efectuar la sumatoria.
lastrec=recc()+3
lastcellNumber=lastrec+1

&& Asigno el nombre de la hoja Excel a una variable de trabajo
cFileName = "sumatoria.xls"

&& Convierto la tabla a Excel
COPY to 'sumatoria' fields fecha,cliente,metodo,paquetes type xl5

&& Crea el objeto excel
oExcel = CreateObject("Excel.Application")

&& Abre la hoja de calaculo
oWorkbook = oExcel.Workbooks.Open(cFileName)

&& Insertar el titulo "Totales" en una a celda
oExcel.ActiveSheet.Range(lastcell).value="T O T A L E S =>"

&& Poner en negrita el Titulo "Totales"
WITH oExcel.Range(lastcell).Font

.Name = "Arial"
.Bold = .T.

ENDWITH

&& Suma un rango de Celdas
lastcell="D"+alltrim(str(lastcellNumber))
oExcel.ActiveSheet.Range(lastcell).select && Se posiciona en la celda donde va realizar la suma.
oExcel.ActiveSheet.Range(lastcell).Formula = "=SUM(D4:D" + alltrim(str(lastrec)) + ")"

&& Poner en negrita la sumatoria
WITH oExcel.Range(lastcell).Font

.Name = "Arial"
.Bold = .T.

ENDWITH

&& Hace visible la hoja de calculo.
oExcel.Visible = .T.

&& Borra el objeto oExcel
Release oExcel

Pruebalo y me cuentas.
Saludos desde Peru,
Cesar
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sumas en Excel desde Fox

Publicado por Salvador Angeles (20 intervenciones) el 09/11/2010 18:51:20
Mi estimado Cesar, abusando de tu confianza, sabes como pasar de un libro a otro desde Fox?
por ejemplo de Hoja1 a Hoja3
Gracias de Antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sumas en Excel desde Fox

Publicado por Gustavo (33 intervenciones) el 13/12/2018 16:00:05
Hola Cesar, como estas?

Estaba probando tu código y me encuentro con un error en la linea:

&& Insertar el titulo "Totales" en una a celda
oExcel.ActiveSheet.Range(lastcellNumber).value="TOTALES"

El error es: "ole error code 0x800a03ec unknown com status code"

Y no me deja avanzar, me podrías ayudar por favor a solucionarlo?

Desde ya muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Sumas en Excel desde Fox

Publicado por Fidel José (657 intervenciones) el 13/12/2018 19:57:37
1) Te metes en un hilo de 8 años. Sería raro que te respondan.

2) Siempre conviene acortar la referencia de objeto
3) Para escribr en una sola celda suele ser mejor utilizar Cells(lnRow , lnColumn)

1
2
3
4
5
6
loExcel = NEWOBJECT("Excel.Application")
loExcel.Workbooks.Add
loBook = loExcel.ActiveWorkbook
loSheet = loExcel.ActiveSheet
loSheet.Cells(20,1).Value = "Totales"
loExcel.Visible = .t.

4) Si necesitas transformar una letra de columna en su número de orden, puedes utilizar esta función:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
PROCEDURE Excel_Letter_to_ColumnNumber
LPARAMETERS tcString
*---------------------------------------------------------
* Name: excel_Letter_to_ColumnNumber
* Microsoft Excel ®
* Transforma un valor alfabético de columna en valor numérico
* RETORNA: Número
* --------------------------------------------------------
* Parameter tcString
* Mínimo: 					"A"			1
* Máximo: 16384 ( 2 ^^ 14)	"XFD"	16384
*---------------------------------------------------------
 
LOCAL i,;
	lnLen,;
	lnPas,;
	lnReturn
 
lnREturn = 0
 
IF VARTYPE(m.tcString) # "C"
	tcString = ""
ENDIF
tcString = UPPER(ALLTRIM(m.tcString))
lnPas = 0
IF !EMPTY(m.tcString)
	lnlen = LEN(m.tcString)
	FOR i = m.lnLen TO 1 STEP - 1
		lnReturn = m.lnReturn ;
			+ (ASC(SUBSTR(m.tcString,m.i,1)) - 64 ) * 26 ^ lnPas
 
		lnPas = m.lnPas + 1
	NEXT
ENDIF
RETURN m.lnReturn
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar